SQLite返回不正确的星期数

时间:2019-06-19 10:04:37

标签: sqlite datetime week-number

我正在尝试从SQLite中的日期获取ISO week number。当我尝试几次约会时,它会给出错误的星期数。

例如:

SELECT STRFTIME('%W', '2018-12-31')

返回53。

但是,有一个解决方案建议使用以下代码:

SELECT strftime('%Y', '2018-12-31 00:00:00') || '-' || ( (strftime('%j', date('2018-12-31 00:00:00', '-3 days', 'weekday 4')) - 1) / 7 + 1) as week

返回2018-1,但预期结果为2019-1,因为根据ISO周号*,2018-12-31属于2019年的第一周。

在SQLite中获取正确的ISO周号的正确方法是什么?

*根据ISO-8601标准的星期编号,从星期一开始的星期。一年的第一周是包含该年的第一个星期四的一周(=“第一个4天工作周”)

1 个答案:

答案 0 :(得分:0)

此解决方案满足了我的期望。

select strftime('%Y', date('2018-12-31 00:00:00', '-3 days', 'weekday 4'))返回2019。

strftime('%Y', date('2018-12-31 00:00:00', '-3 days', 'weekday 4')) || '-' || ( (strftime('%j', date(time, '-3 days', 'weekday 4')) - 1) / 7 + 1) as week

返回预期结果,2019-1。