【发布时间】:2023-03-25 21:37:02
【问题描述】:
我是 Teradata 的新手。情况如下:
如果 Current_date 小于一个月的 15 号,那么 ?Startdate 参数 = 上个月的 1 号并且 ?EndDate 参数 = 本月的最后一天
SELECT ... FROM ViewA
WHERE date BETWEEN ?Startdate AND ?EndDate
如果 Current_date >= 15 则为 ELSE,则 Startdate 参数 = 当前月的 1 日,EndDate 参数 = 当前月的最后一个日期
SELECT ... FROM ViewA
WHERE date BETWEEN ?Startdate AND ?EndDate
我能够计算每种情况下的日期,但无法弄清楚:
#1) 如何将它们放入参数中。如果我可以将它们放在参数中,那么我所要做的就是
SELECT ... FROM ViewA
WHERE date BETWEEN ?Startdate AND ?EndDate
或 #2) 写一个 IF-THEN-ELSE
If Current_date is < 15 of month
SELECT ... FROM ViewA
WHERE Date BETWEEN
ADD_MONTHS((DATE - EXTRACT(DAY FROM DATE)+1), -1) AND ADD_MONTHS(LAST_DAY(DATE),0)
ELSE
SELECT ... FROM ViewA
WHERE date BETWEEN
ADD_MONTHS((DATE - EXTRACT(DAY FROM DATE)+1), 0) AND ADD_MONTHS(LAST_DAY(DATE),0) )
END IF
请指导如何实现#1 或#2。我无法在 teradata 中创建函数或存储过程
【问题讨论】:
-
您的专栏真的命名为“日期”吗?如果是这样,你必须把它放在双引号中。不确定它是否会这样工作,或者与实际日期进行比较。
-
不,它没有命名为“日期”,但它是一个日期字段
标签: if-statement parameters teradata