我需要一些帮助来构建以下逻辑..
我有一个日期主表(过去和将来的日期)。我需要在当前月份的那些日期旁边添加一个标志。这部分很容易我可以添加一个列,将所有日期转换为月的第一天(例如,1/1 / 2000,1 / 2 / 2000,1/3/2000将全部落在2000年1月1日之下)并将其与系统的current_date的相同计算进行比较。如果为true,则添加flag =' Y'
如果日期是星期六或星期日,那么它变得棘手,当前月份应该指向上一个日期。例如,如果当前日期是2/1/2018并且它是在星期六。1月仍然应该被标记为截至2月3日的当前月份。试图找出这件作品。
有什么建议吗?感谢
答案 0 :(得分:0)
一种简单的方法是使用date_trunc()
:
select (case when trunc(datecol, 'M') = trunc(current_date, 'M')
then 1 else 0
end) as flag
答案 1 :(得分:0)
Trunc(calendar_date
- CASE day_of_week -- based on Teradata's syscalendar, week starts on sunday
WHEN 1 THEN 2 -- sunday = 7 in ISO calendar
WHEN 7 THEN 1 -- saturday = 6 in ISO calendar
ELSE 0
END, 'mon') as First_of_Business_Month