8

Quartz.net スケジューラ ジョブの ado.net ジョブ ストアとして使用している Sqlite データベースがあります。あるテーブルでは、START_TIME という列が big int 型です。

bigint を日付値にキャストまたは変換する方法はありますか? データベースにクエリを実行して、どのジョブがどの日時にスケジュールされているかを確認できるようにしたいと考えています。633869892000000000 などの値は意味がありません。

ありがとう!

4

5 に答える 5

14

これは私にとってはうまくいったようです。YourTable から datetime(DateColumn/10000000 - 62135596800, 'unixepoch') を選択します

へのクレジット; https://forums.xamarin.com/discussion/54282/sqlite-datetime-convert-to-net-datetime

于 2017-01-12T07:10:24.523 に答える
10

それが標準の秒(Unixエポック以降)であると仮定するとSTART_TIME、次を使用できます。

select datetime(MyBigIntColumn, 'unixepoch');

http://www.sqlite.org/lang_datefunc.htmlの「修飾子」セクションを参照してください。

于 2009-08-27T17:20:54.833 に答える
2

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」が得られます

于 2013-11-26T22:27:49.463 に答える