過去我已經玩過一些SQLite,我很喜歡它,因此我想將它用於新項目。將日期時間存儲到SQL並將其作爲整數
第1步是創建數據庫,我需要創建一個DateStamp
字段,其中我在事件發生時放置時間戳。
在SQLite Documentation,日期和時間數據類型定義如下:
1.2日期和時間數據類型
SQLite沒有存儲類,用於存儲日期 擱置和/或次數。取而代之的是,內置的SQLite 的日期和時間函數能夠存儲日期和時間爲TEXT,REAL或INTEGER 值:
- TEXT爲ISO8601字符串(「YYYY-MM-DD HH:MM :SS.SSS「)。
- 真實的Julian日數,自中午4714年11月24日格林威治中午以來的天數。根據公曆 公曆。
- INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以來的秒數。
應用程序可以選擇存儲日期和時間在任何這些 格式和自由使用內置的日期和時間 功能格式之間轉換。
我寧願不保存日期爲文本,而因爲Windows DateTime對象不回去11月24日,4714公元前,我認爲我留下了存儲DateTime值爲整數。
那麼,如何將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有一些built in functions,但我真的不明白如何使用它們。
解決:
嘛便便。
它可以這麼簡單嗎?
public static long ToFileTimeUtc(DateTime dateTime) {
return dateTime.ToFileTimeUtc();
}
public static DateTime FromFileTimeUtc(long fileTimeUtc) {
return DateTime.FromFileTimeUtc(fileTimeUtc);
}
評論?
我可以不這樣做嗎?
如果您覺得您的問題已被您的答案回答,請取消刪除您的答案並從問題標題中刪除[已解決]。 – naveen 2012-07-22 18:50:11
現在我瘋了! Mystere Man說我需要刪除它(我得到了一個downvote),現在你說我應該加回來。嘗試在SO上進行政治上的糾正是困難和混亂的。 – jp2code 2012-07-22 18:53:51