我需要帮助,将以下vba代码转换为类似的SQL字符串。
vDt = Now()
vStartDate = UCase(Format(DateSerial(Year(vDt), Month(vDt) - 1, 1), "DD-MMM-YYYY"))
vEndDate = UCase(Format(DateSerial(Year(vDt), Month(vDt), 0), "DD-MMM-YYYY"))
答案 0 :(得分:0)
如果我正确理解这一点,则希望开始日期为上个月的第一天,结束日期为当前月份的最后一天。然后,您要将它们转换为日期格式DD-MMM-YYYY。如果是这样,下面将是相应的SQL:
DECLARE @now DATETIME;
DECLARE @start DATETIME;
DECLARE @end DATETIME;
SET @now = GETDATE();
SET @start = DATEADD(MONTH, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, @now), 0));
SET @end = EOMONTH(@now);
SELECT UPPER(REPLACE(CONVERT(VARCHAR(12), @start, 106), ' ', '-')) AS StartDate,
UPPER(REPLACE(CONVERT(VARCHAR(12), @end, 106), ' ', '-')) AS EndDate;
编辑-抱歉,我应该提到这是在Microsoft T-SQL中而不是Teradata SQL Assistant中(谢谢@a_horse_with_no_name)。我对Teradata并不熟悉,所以我无法给您确切的答案,但是我相信您可以找到类似的函数来翻译上述答案。
答案 1 :(得分:0)
在Teradata SQL中,您使用来获取上个月的第一天
Trunc(Add_Months(Current_Date, -1), 'mon')
以及本月的最后一天:
Last_Day(Current_Date)
如果要使用DD-MMM-YYYY
字符串,当然可以返回数据:
SELECT
To_Char(Trunc(Add_Months(Current_Date, -1), 'MON'), 'DD-MON-YYYY')
,To_Char(Last_Day(Current_Date), 'DD-MON-YYYY')