java 向sqlite插入时间_关于java:Sqlite组按天日期

我正在尝试从表格中检索不同日期的列表。 它们以整数存储。

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' */

这是输出:

571fd995193b6d3de7d486ba3cbf05a6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值