【问题标题】:How to convert 2001 based timestamp to datetime in SQLite?如何在 SQLite 中将基于 2001 的时间戳转换为日期时间?
【发布时间】:2015-08-12 17:02:21
【问题描述】:

ZPUBLICATIONDATETIME 的类型为 TIMESTAMP

所以当我这样做时:

SELECT strftime('%d - %m  - %Y ', datetime(ZPUBLICATIONDATETIME, 'unixepoch')) FROM ZTNNEWS;

我得到 26 - 05 - 1984 而不是 2015。iOS(核心数据)基于 1 Jan 2001 写入日期时间。获得正确日期转换的最佳方法是什么?

我应该在上面加上 31 年,还是有替代 unixepoch 的选项?

基本上我要做的是获取过去两天的记录:

select * 
from ZTNNEWS
where DATETIME(ZPUBLICATIONDATETIME) >  DATETIME('now', '-2 day')

但是因为ZPUBLICATIONDATETIME 的类型是TIMESTAMP 而不是日期时间,所以它不会输出任何内容。

有什么建议吗?

【问题讨论】:

    标签: sqlite datetime timestamp


    【解决方案1】:

    刚刚遇到同样的问题。将日期值添加到 1 Jan 2001 的秒数似乎可以完成这项工作:

    SELECT * FROM ztnnews WHERE DATETIME(zpublicationtime + 978307200) > DATETIME('now', '-2 day');
    

    我用 ruby​​ 得到了1 Jan 2001的秒数:

    $ irb
    2.2.3 :001 > require "time"
     => true 
    2.2.3 :002 > Time.parse( "2001-01-01T00:00:00Z").to_i
     => 978307200 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2022-01-10
      • 2019-04-03
      • 1970-01-01
      • 2017-04-25
      • 2022-01-08
      相关资源
      最近更新 更多