添加当前月份标志

时间:2018-02-01 22:21:04

标签: sql teradata

我需要一些帮助来构建以下逻辑..

我有一个日期主表(过去和将来的日期)。我需要在当前月份的那些日期旁边添加一个标志。这部分很容易我可以添加一个列,将所有日期转换为月的第一天(例如,1/1 / 2000,1 / 2 / 2000,1/3/2000将全部落在2000年1月1日之下)并将其与系统的current_date的相同计算进行比较。如果为true,则添加flag =' Y'

如果日期是星期六或星期日,那么它变得棘手,当前月份应该指向上一个日期。例如,如果当前日期是2/1/2018并且它是在星期六。1月仍然应该被标记为截至2月3日的当前月份。试图找出这件作品。

有什么建议吗?感谢

2 个答案:

答案 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