我正在尝试从表格中检索不同日期的列表。 它们以整数存储。
cal.getTime().getTime()
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
我写的
select strftime('%d-%m-%Y'," + date_clmn +") from"
+ TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn +")"
接下来,我将这些值转换为String。
我得到的是:
24-11--471
之后,当我尝试使用
strftime('%d-%m-%Y',date_clmn)=24-11--471
我什么都没有。
怎么了?
我会用这种方式在时区上遇到麻烦吗?
如果还有其他方法,我很高兴听到您的声音。
提前致谢。
更新
Tried"date(" + date_clmn+",'unixepoch')"
now retrieved value is"1970-01-01"
我认为比较会是strftime(%d-%m-%Y,date_clmn) = 24-11--471。 只需将24-11--471括在单引号中,因为您需要比较两个字符串,并且sqlite显然不会检测到这种类型的不匹配,即使查询运行完美,但当然也不会检索任何行。 如果它有效并且您同意,我可以将此作为答案提交。
谢谢,它也在那里! @ dic19
不客气 :)
由于您没有在表中存储日期,因此需要更改字段。 尝试使用以下代码:
"select strftime('%d-%m-%Y'," + date_clmn +"/1000,'unixepoch') from"
+ TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn +"/1000,'unixepoch')"
我添加此内容是因为我认为这可能对某人有所帮助。 根据文档,strftime()返回给定格式的字符串日期。 因此在此子句中:
strftime('%d-%m-%Y',date_clmn) = 24-11--471
^ ^
string this expression returns an integer
这里存在SQLite无法检测到的类型不匹配。 甚至查询都可以完美运行(我已经对其进行了测试,并且没有错误地运行),但是当然它不会检索任何行。
正确的比较是:
strftime('%d-%m-%Y',date_clmn) = '24-11--471'
测试:下面是一些代码来测试此行为:
CREATE TABLE dateTest(myDate VARCHAR);
INSERT INTO dateTest(myDate) VALUES ('2013-08-29 18:57:00');
SELECT strftime('%Y-%m-%d',myDate) AS formatted, myDate FROM dateTest WHERE strftime('%Y-%m-%d') = 2013-08-29; /* this won't retrieve any row */
SELECT strftime('%Y-%m-%d',myDate) AS formatted, myDate FROM dateTest WHERE strftime('%Y-%m-%d') = '2013-08-29'; /* this will retrieve '2013-08-29 | '2013-08-29 18:57:00' */
这是输出: