sqlite - SQLite 返回不适当的周数
问题描述
我正在尝试从 SQLite 中的日期获取ISO 周数。当我尝试几个日期时,它给出了错误的周数。
例如:
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 标准的周数,从星期一开始的周数。一年中的第一周是包含该年第一个星期四的那一周(='First 4-day week')
解决方案
这个解决方案给了我期待的一年。
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。
推荐阅读
- java - 如何以编程方式删除添加的视图
- excel - 错误地声明变体以指定单个单元格
- java - 音频完成后更改背景颜色
- python - Appium - 定义隐藏在汉堡菜单后面的元素
- vba - 如何在发送前删除电子邮件正文中的文本?
- python - Pandas 两个数据框在 CIDR 中查找 IP 并在 CIDR 列中映射
- android - 在 64 位 Android 设备上从 Google Play 商店安装应用程序时,如果应用程序支持,该应用程序是否安装为 64 位?
- javascript - 如何改为将 console.log 写入文件
- reactjs - React.js 中的间歇性类型错误
- ios - 谷歌平面缓冲区 iOS