我想从日期返回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/