我在这里的第一篇文章,所以请保持温柔...
我正在尝试在Teradata(SQL)中创建一个星期数变量,该变量执行以下操作:
例如:如果星期六是星期几?
我已经基于Excel函数提出了以下建议,但是它并没有按预期工作:
ROUND(((DATE_SPECIFIED - CAST(EXTRACT(YEAR FROM DATE_SPECIFIED) || '-01-01' AS DATE) + 1) - ((DATE_SPECIFIED - DATE '0001-01-06') MOD 7 + 1) + 10) / 7) AS REQUIRED_WEEK
- DATE '0001-01-06'
部分的最后一位数字与一周中的指定日期相关,其中“ 0001-01-01”将为星期一。
这在某些情况下仍然有效,但是在某些年份中,第一个星期的数字显示为0,应为1,例如2018年1月1日/ 2019年1月1日很好,而2020年1月1日则不是。
将不胜感激地收到任何纠正此问题的想法。
非常感谢,
麦克
嗯。 。 。我对Teradata函数有一点时间。但想法是开始second周。这遵循规则:
Jan 1 weekday (TD) 2nd week
Sunday 1 01-02
Monday 2 01-08
Tuesday 3 01-07
Wednesday 4 01-06
Thursday 5 01-05
Friday 6 01-04
Saturday 7 01-03
我认为以下逻辑对此进行了计算:
select t.*,
(case when td_day_of_week(cast(extract(year from DATE_SPECIFIED) || '-01-01' as date) ) = 1
then cast(extract(year from DATE_SPECIFIED) + '-01-02' as date)
else extract(year from DATE_SPECIFIED) + 10 - cast(td_day_of_week(cast(extract(year from DATE_SPECIFIED) || '-01-01') as date)
from t;
然后,您是从第二周算起还是从一周算起,还是再减去一个星期才能得出第一周真正开始的时间。