SQLite возвращает недопустимый номер недели - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь получить номер недели ISO от даты в SQLite.Когда я примеряю несколько дат, это дает неправильный номер недели.

Например:

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 года.

Как правильно получить правильную неделю ISOномер в SQLite?

* Номер недели в соответствии со стандартом ISO-8601, недели, начинающиеся с понедельника.Первая неделя года - это неделя, в которой содержится первый четверг этого года (= «Первая четырехдневная неделя»)

1 Ответ

0 голосов
/ 20 июня 2019

Это решение дало год, который я ожидал.

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.

...