sqlite中格式化日期datetime函数的坑

/ 数据库 / 没有评论 / 400浏览

今天在更新博客时遇到了一个问题,就是有一篇文章在归档中居然不显示,后来排查问题时发现问题导致的原因就是sqlite中datetime函数惹的祸。


我们取今天的凌晨日期,并用工具将它转换成时间戳,然后在sqlite中执行datetime函数看看这两个时间戳获取的是否一致。

img

下面我们调用datetime函数看看1533052800时间戳格式化后的日期是不是2018/8/1 00:00:00。

select datetime(1533052800, 'unixepoch') t_contents limit 1

img

我们看datetime函数将时间戳格式化成日期居然是错误的。那这又是什么原因呢?怎么解决呢?这是因为datetime函数确实是格式化日期函数,但默认返回的并不是当前时区的日期。如要返回当前时区的日期还需要添加localtime参数。

select datetime(1533052800, 'unixepoch', 'localtime') t_contents limit 1

img

这样我们就可以正确的通过时间戳格式化日期了。