我在试着计算两天之间的周数。当差值是8天时,我应该有1到2周的时间,这取决于Redshift中的函数是如何工作的(向上或向下舍入)。但是,无论它选择哪种方式,它都应该是一致的。
我意识到我可以简单地取天数,然后除以7,然后进行一次舍入或一次CEIL,但我只是试图理解为什么当两个日期相差8天时,DATEDIFF(weeks,date1,date2)会提供1或2。
SELECT
DATEDIFF(weeks, '2019-03-17', '2019-03-25') AS week_difference1,
DATEDIFF(days, '2019-03-17', '2019-03-25') AS day_difference1,
DATEDIFF(weeks, '2019-03-16', '2019-03-24') AS week_difference2,
DATEDIFF(days, '2019-03-16', '2019-03-24') AS day_difference2
结果: week_difference1 =1
day_difference1 =8
week_difference2 =2
day_difference2 =8
发布于 2019-03-29 07:23:12
与许多来自美国的软件产品一样,Redshift一周的第一天(至少就DATEDIFF而言)是星期天,而不是星期一的ISO标准。因此,在计算两个日期之间的周数时,边界是星期六/星期日。
在您的示例中,2019年3月16日到2019年3月24日之间的8天跨越了两个星期的界限(一个在3月16/17,另一个在3月23/24 ),因此结果DATEDIFF值是2(跨越两个星期的界限)。
但是,3月17日和3月25日之间的8天仅跨越一周边界(3月23日/24日),因此结果DATEDIFF值为1。
https://stackoverflow.com/questions/55389416
复制相似问题