SQLite strftime()工作日

时间:2016-08-29 02:16:49

标签: sqlite weekday

我一直在努力计算在特定工作日创建了多少个值:

SELECT count(*) as count FROM packets WHERE strftime("%w", timeIn) = '1';

我在timeIn

中有这个值
1472434822.60033
1472434829.12632
1472434962.34593

我不知道我在这里做错了什么。

此外,如果我使用它:

SELECT count(*) as count FROM packets WHERE strftime("%w", timeIn) = '6';

我得到了

2

没有意义。先感谢您。

1 个答案:

答案 0 :(得分:1)

您似乎将日期存储为自1970年以来的秒数(Unix纪元) - 一种常见的表示形式。 SQLite date functions接受的时间字符串(请参阅时间字符串部分)默认将数字时间字符串解释为Julian日数字:

  

同样,格式12显示有10位有效数字,但日期/时间函数将真正接受表示朱利安日数所需的数字或数字。

您可以使用以下SELECT

查看此内容
SELECT strftime('%Y-%m-%d', 1472428800.6) AS t

结果是:

4026-48-26

要将您的日期表示解释为Unix纪元,您需要在'unixepoch'电话中加入strftime

SELECT strftime('%Y-%m-%d', 1472428800.6, 'unixepoch') AS t

返回:

2016-08-29

如果您将SELECT修改为:

SELECT count(*) as count FROM packets WHERE strftime("%w", timeIn, 'unixepoch') = '6'

你应该看到结果更符合你的期望。