我想从日期返回ISO标准星期数(即1-52 / 53星期)。
我尝试使用内置函数strftime,但没有成功。

任何人都可以提出一种无需编写自定义C或其他函数的方法的建议。

最佳答案

我知道这是一个老问题,但是最近我一直在寻找针对同一问题的有效解决方案,这就是我想出的:

SELECT
    my_date,
    (strftime('%j', date(my_date, '-3 days', 'weekday 4')) - 1) / 7 + 1 as iso_week
FROM my_table;


基本思想是通过简单地执行查找日期(my_date)的星期四的某天的整数除以7,以得到0到52之间的结果,然后对其加1,来计算ISO周数。并且在除法之前将1减就是为了除法的对齐:例如,第1周的星期四可以是1到7之间的一年中的某天,我们希望除法的结果为0 in所有情况下,因此我们需要从一年中减去1后再除以7。

关于sqlite - SQLite ISO(即欧式风格)星期数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9383432/

10-12 12:44
查看更多