私は過去にSQLiteで少し遊んだことがありますが、新しいプロジェクトで使用したいほど気に入っています。
ステップ1はデータベースを作成することでありDateStamp
、イベントが発生したときにタイムスタンプを配置するフィールドを作成する必要があります。
SQLiteドキュメントでは、日付と時刻のデータ型は次のように定義されています。
1。2日付と時刻のデータ型
SQLiteには、日付や時刻を保存するためのストレージクラスがありません。代わりに、SQLiteの組み込みの日付と時刻関数は、日付と時刻をTEXT、REAL、またはINTEGER値として格納できます。
- ISO8601文字列としてのTEXT( "YYYY-MM-DD HH:MM:SS.SSS")。
- ユリウス日数としてのREAL、先発グレゴリオ暦による紀元前4714年11月24日のグリニッジでの正午からの日数。
- UNIX時間としてのINTEGER、1970-01-0100:00:00UTCからの秒数。
アプリケーションは、これらの形式のいずれかで日付と時刻を保存し、組み込みの日付と時刻関数を使用して形式間で自由に変換することを選択できます。
日付をテキストとして保存したくはありません。WindowsのDateTimeオブジェクトは紀元前4714年11月24日に戻らないため、DateTime値をINTEGERとして格納する必要があると思いました。
では、DateTimeを整数として保存するにはどうすればよいですか?基準日TimeSpan
と希望の日付の間を取得し、日数を抽出して保存しますか?
// is this a UTC date?
private static readonly DateTime utc1970_01_01 = new DateTime(1970, 1, 1);
public static double GetIntDate(DateTime dateTime) {
// FYI: subtracting dates in .NET returns a time span object
return (dateTime - nov24_4714bc).TotalSeconds;
}
そうですか?これは、SQLiteを使用する他のすべての人が行っていることですか?
また、SQLiteは日時をUTC時間で保存するため、その上で再度変換する必要があります。
確かに誰かが以前にこれをしたことがあります。これらの入力を処理する誰かがすでに作成したツールを見ていただければ幸いです。SQLiteにはいくつかの組み込み関数がありますが、それらの使用方法がよくわかりません。
解決済み:
うんち。
これほど簡単でしょうか?
public static long ToFileTimeUtc(DateTime dateTime) {
return dateTime.ToFileTimeUtc();
}
public static DateTime FromFileTimeUtc(long fileTimeUtc) {
return DateTime.FromFileTimeUtc(fileTimeUtc);
}
コメント?
できませんか?