如何在SQLite中处理日期?

时间:2016-08-06 21:05:59

标签: sqlite

我在Sqlite DB中有一个表有两个字段Id和Date(Date是Text类型)。 我在c#中存储了几个日期。现在我想获得与特定日,月和年匹配的记录。 我试过的查询是:

select strftime('%m', Date) from testTbl Where id = 3;

也:

select Date(substr(Date, 0, 10))  as daa from testTbl Where id = 3;

但这两个quires的结果总是为null ..任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

建议(立即)修复

使用以下选择

select substr(Date, 0, 10)  as daa from testTbl Where id = 3;

问题原因

问题(如果您使用substr函数包围上述Date),您使用的文字类型不在预期的format

  

时间字符串

     

时间字符串可以采用以下任何格式:

     

YYYY-MM-DD

     

YYYY-MM-DD HH:MM

     

YYYY-MM-DD HH:MM:SS

     

YYYY-MM-DD HH:MM:SS.SSS

     

YYYY-MM-DDTHH:MM

     

YYYY-MM-DDTHH:MM:SS

     

YYYY-MM-DDTHH:MM:SS.SSS

     

HH:MM

     

HH:MM:SS

     

HH:MM:SS.SSS

     

现在

     

DDDDDDDDDD

替代(更好)方法

无论如何恕我直言,最好用日期类型创建列并以下列方式插入值

insert into testTbl values (DateTime("2015-12-31"),3);

这样你就可以

SELECT strftime('%m/%d/%Y',Date) from testTbl where id = 3;

SELECT Date from testTbl where Date > DateTime('2016-01-01');
从C#

参数化命令将类似于

"insert into testTbl values (DateTime(?),?);"

参数值为myDate.ToString("yyyy-MM-dd")

无论如何,你可以实际获得substr(Date,0,2)的月份字符串和带有当前格式的substr(Date,5,4)的年份。我只是建议一个替代方案,我会找到更多标准(使用内置 Date格式)