加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite返回错误的2013年周数?

发布时间:2020-12-12 19:03:35 所属栏目:百科 来源:网络整理
导读:我在SQLite的报告中有一个简单的SQL来计算周数 SELECT STRFTIME('%W','date_column') 对于2009-2012非常正确.在2013年,我总是错误的周数. 例如 SELECT STRFTIME('%W','2012-02-28') 返回’09’,这是正确的. SELECT STRFTIME('%W','2013-02-28') 返回’08’,
我在SQLite的报告中有一个简单的SQL来计算周数
SELECT STRFTIME('%W','date_column')

对于2009-2012非常正确.在2013年,我总是错误的周数.

例如

SELECT STRFTIME('%W','2012-02-28')

返回’09’,这是正确的.

SELECT STRFTIME('%W','2013-02-28')

返回’08’,这是错误的.我们有第9周.

SQLite日期时间函数中有什么我不明白的东西吗?或者它是SQLite的错误?

CL的答案适用于OP对“权利”的定义,这与ISO定义不完全相同. ISO周数始终在1-53范围内(没有第0周),一年的最后3天可能会落入下一年的第1周,就像前3天可能会进入第52周或第53周前一年.要考虑这些角落情况,您需要执行以下操作:
SELECT
    (strftime('%j',date(MyDate,'-3 days','weekday 4')) - 1) / 7 + 1 AS ISOWeekNumber
FROM MyTable;

作为旁注,SQLite’s Date and Time文档确实链接到POSIX strftime手册页,该手册页将%W修饰符定义为:“一年中的周数(星期一作为一周的第一天)作为十进制数[00,53].在第一个星期一之前的新年中的所有日期都被认为是在第0周.”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读