Quartz.net スケジューラ ジョブの ado.net ジョブ ストアとして使用している Sqlite データベースがあります。あるテーブルでは、START_TIME という列が big int 型です。
bigint を日付値にキャストまたは変換する方法はありますか? データベースにクエリを実行して、どのジョブがどの日時にスケジュールされているかを確認できるようにしたいと考えています。633869892000000000 などの値は意味がありません。
ありがとう!
これは私にとってはうまくいったようです。YourTable から datetime(DateColumn/10000000 - 62135596800, 'unixepoch') を選択します
へのクレジット; https://forums.xamarin.com/discussion/54282/sqlite-datetime-convert-to-net-datetime
それが標準の秒(Unixエポック以降)であると仮定するとSTART_TIME
、次を使用できます。
select datetime(MyBigIntColumn, 'unixepoch');
http://www.sqlite.org/lang_datefunc.htmlの「修飾子」セクションを参照してください。
Common Age (CA) またはクリスマスの始まりから数百ナノ秒 (1 ns = 1/10^9 秒) です。日付をこの形式から通常の日付に変換するには:
1. 最初に、100 ナノ秒の 633869892000000000=YourDateHundredsOfNanoSecondsCA を次の式で Unixepoch 形式 (1970 年 1 月 1 日からあなたの日付までの秒数) に変換する必要があります。
(YourDateHundredsOfNanoSecondsCA-(ROUND(1969*(365+1/4-1/100+1/400),0)-2)*24*60*60*1E9/100)*100/1E9,
どこ:
1.1 ROUND(1969*(365+1/4-1/100+1/400),0)-2)=DaysOf1970Years - イエスが生まれた日から 1970 年 1 月 1 日までの日数のラウンド カウント。
1.2 HundredsOfNanoSecondsOf1970Years=DaysOf1970Years*24*60*60*1E9/100 - Common Age の始まりから Unix エポック (1970 年 1 月 1 日) の始まりまでの数百ナノ秒。
1.3 YourDateInUnixEpochSeconds=(YourDateHundredsOfNanoSecondsCA-HundredsOfNanoSecondsOf1970Years)*100/1E9 - 1970 年 1 月 1 日からあなたの日付までの秒数。
2. 関数によって Unix エポック形式の日付を読み取り可能な形式に変換します (SQLite の例を示します)。
SELECT datetime(YourDateInUnixEpochSeconds, 'unixepoch');
この例では、この文字列を SQLiteStudio の SQL クエリ エディターにコピーして実行できます。
SELECT datetime((633869892000000000-(ROUND(1969*(365+1/4-1/100+1/400),0)-2)*24*60*60*1E9/100)*100/1E9, 'unixepoch ');
その結果、「2010-12-19 17:00:00」が得られます