如何将sqlite时间戳与C#DateTime
进行比较?我有:
string query = string.Format(@"select avg(CPUH_VALUE_ALL) as Value from CPU_HOUR where CPUH_DATE >= @Date");
var pars = new List<SQLiteParameter>();
pars.Add(new SQLiteParameter("Date", DateTimeSQLite(DateTime.Now.AddMinutes(-12))));
其中
static string DateTimeSQLite(DateTime datetime)
{
string dateTimeFormat = "{0}-{1}-{2} {3}:{4}:{5}.{6}";
return string.Format(dateTimeFormat, datetime.Year, datetime.Month, datetime.Day, datetime.Hour, datetime.Minute, datetime.Second, datetime.Millisecond);
}
那不行。当我尝试将时间戳与各种格式的日期字符串值进行比较时,没有任何作用。有线索吗?
修改
select CPUH_DATE from CPU_HOUR where CPUH_DATE
给我这样的记录:
5/19/2014 9:30:54 PM
EDIT2 我刚刚发现,虽然这不起作用:
select * from CPU_HOUR where CPUH_DATE >= '2014-5-19 21:30:08'
这是(注意5之前的零):
select * from CPU_HOUR where CPUH_DATE >= '2014-05-19 21:30:08'
有趣。
答案 0 :(得分:3)
SQLite没有为存储日期留出的存储类 和/或时间。相反,SQLite的内置日期和时间函数 能够将日期和时间存储为TEXT,REAL或INTEGER 值:
TEXT as ISO8601 strings(&#34; YYYY-MM-DD HH:MM:SS.SSS&#34;)。真如朱利安 日数,11月以来格林威治中午以来的天数 公元前24,4714根据公历格里高利历。整数 as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。 应用程序可以选择在任何这些中存储日期和时间 使用内置日期格式和格式之间自由转换 时间函数。
来源:sqllite.org
我的建议是将日期时间值保存为整数。通过这种方式,您可以毫无问题地进行比较等操作。如果您在查询中需要非数字日期,则可以使用内置的Datetime函数,如下所示:
SELECT datetime(1092941466, 'unixepoch');