2010-11-28 34 views
3

私は地元の教会のC#のジャーナリングシステムに取り組んでいますが、生年月日を保存するときにデータベース接続に問題があります。 MSDNによれば、現れる可能性のあるイヤリストの日付は1月1日です。1.私は、イエス・キリストの生誕日と私たちにとって重要な初期の性格をどのように記録するのですか?生年月日を表す

+1

誰? –

+2

私は恐竜の化石をカタログ化するときに同じ問題を抱えていました( –

+0

MySQLの 'datetime'型はその問題を回避しますが、化石の日付を格納することはできません。多分、MSSQL(またはあなたが使っているもの)に似たものがありますか? – Bojangles

答えて

1

.NETでBCの日付を処理するために独自のクラスをロールし、データベースに文字列または年、月の別のフィールドとして格納する必要があります(必要な精度に応じて)データベース側で検索と並べ替えを実行する必要があります。

日付に対するSQL Serverのサポートは、.NETのものよりも制限的です(1753年または1752年までのみ戻っています)。

This blog postは、1つの可能な実装ですが、年だけを格納するため、非常に限られたものです。しかし、私はあなたのニーズに応じて必要に応じて変更できると確信しています。例えば、IComparable、IEquatable、IFormattable、おそらくIConvertibleなどのいくつかのインターフェイスを実装することはおそらくうまくいくかもしれません。

0

簡単な答え - 日、月、年を別々の数値フィールドとして保存します。日と月を組み合わせて1日の価値にすることはできますが、うるう年に注意する必要があります。バック標準の日数に日付を変換する方法とがある...

http://en.wikipedia.org/wiki/Julian_day

あなたが変換を自分で行う場合は、基本的には(その番号を記憶している -

代替答えちょうど日付を表すように起こる)ので、問題はないはずです。あなたのコンバージョンが正しいことを確認する以外にも

+0

ウィキペディアの記事を読んでから、可能な限り早い日付は紀元前4714年であり、キリスト教の歴史はそれよりも少し前になります(起源をどのように解釈するかによって紀元前12000〜6000)。 –

+0

私はそれが4004年紀元前だと思ったが、それからGood Omens(http://www.reddit.com/r/firstpage/comments/cu6bh/good_omens_terry_pratchett_neil_gaiman/)からそれを得た。それは良いユーモアで撮影されていることを願っています。とにかく、原理的には、あなたはいくつかの不快感を気にしない限り、日の数字を後ろに広げることができます。日付と日付の間の差異を計算すると、エラーが発生しやすくなりますが、日付を数値に変換する関数を導き出すことは可能です。必ずしも価値があるとは限りません。もちろん、それはあなたがどのように日付を使用するかによって異なります。 – Steve314

+0

それは当然のことながら、日付の処理がエラーになりやすいです。エラー範囲が12,000BCから6,000BCに及ぶ場合、カレンダー定義の問題のために数日は大したことではありません。 – Steve314

1

カレンダーの種類を決定するのは自由ですなら、私は2つの時代を認識する

能力があるグレゴリオ暦、と先読みを行くことをお勧めします:紀元前に4月1日に生まれ と紀元

http://msdn.microsoft.com/en-us/library/system.globalization.gregoriancalendar.aspx

+0

備考の下の最初の段落:「このGregorianCalendarクラスの実装は、現在の時代(A.D.またはC.E.)のみを認識します。」 –

関連する問題