gpt4 book ai didi

SQLite 返回错误的 2013 周数?

转载 作者:IT王子 更新时间:2023-10-29 06:23:37 28 4
gpt4 key购买 nike

我有一个简单的 SQL 用于计算 SQLite 报告中的周数

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的bug?

最佳答案

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 周。"

关于SQLite 返回错误的 2013 周数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082584/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com