我正在尝试从表中检索不同日期的列表。它们存储在整数中。
cal.getTime().getTime()
返回自此Date对象表示的1970年1月1日00:00:00 GMT以来的毫秒数。
我写的是什么
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"
答案 0 :(得分:4)
由于您没有在表格中存储日期,因此需要更改字段。试试这段代码:
"select strftime('%d-%m-%Y'," + date_clmn + "/1000,'unixepoch') from "
+ TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn + "/1000,'unixepoch')"
答案 1 :(得分:3)
我添加这个是因为我觉得它对某人有帮助。根据{{3}} 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' */
这是输出: