我在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 ..任何人都可以帮我解决这个问题吗?
答案 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
格式)