我正在尝试从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天工作周”)
答案 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。