SQLite strftime Group By

时间:2017-02-15 09:24:42

标签: sqlite strftime

我有一个由日期字段和条形码字段组成的表格;我想要上个月按日分组的条形码数量。

看起来它会起作用:

SELECT
COUNT(*) AS count,
strftime('%d-%m-%Y',date) AS day
FROM barcodes
WHERE date >= datetime('now', '-1 month')
GROUP BY day
ORDER BY date ASC;

但这给了我不正确的数量。 E.g:

341|30-01-2017
274|31-01-2017
288|01-02-2017
332|02-02-2017
224|03-02-2017
35|04-02-2017
1009|06-02-2017
1481|07-02-2017
1626|08-02-2017
507|09-02-2017
428|10-02-2017
125|11-02-2017
1838|13-02-2017
2591|

鉴于:

SELECT COUNT(*) FROM barcodes WHERE date LIKE '2017-02-10%';
579

如果我这样做:

SELECT 
COUNT(*) AS count,
strftime('%d-%m-%Y',date) AS day
FROM barcodes
WHERE date LIKE '2017-02-10%'
GROUP BY day
ORDER BY date ASC;

我明白了:

428|10-02-2017
151|

所以我的问题是:当我使用strftime()时,为什么SQLite将结果提供为两行?

1 个答案:

答案 0 :(得分:1)

%d-%m-%Y不是supported date formats之一,因此比较无法正常工作,任何内置日期函数都将返回NULL。