sqlite将时间戳与C#中的DateTime进行比较

时间:2014-05-19 19:04:43

标签: c# sqlite datetime

如何将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' 

有趣。

1 个答案:

答案 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');
相关问题