【问题标题】:Modify query with TRUNC, ADD_MONTHS, LAST_DAY from Teradata SQL so as to work on SQL Server?使用 Teradata SQL 修改 TRUNC、ADD_MONTHS、LAST_DAY 查询以便在 SQL Server 上工作?
【发布时间】:2022-01-19 07:18:56
【问题描述】:

我有来自 Teradata SQL 的代码行,如下所示:

WHERE CAST(COL1 AS DATE) BETWEEN TRUNC(ADD_MONTHS(CURRENT_DATE, -6),'MM') AND LAST_DAY(ADD_MONTHS(CURRENT_DATE,-1))

我的问题是如何修改上面的代码行以便在 SQL Server 中也能工作?

【问题讨论】:

  • 请尝试,利用官方文档,让我们知道你卡在哪里。本网站不是免费的编码服务。
  • 我检查过我有这样的想法: cast(dateadd(mm,-6,getdate()) as date) 但它给了我 2021-07-18 但我需要 2021-07-01 ,你明白我的问题吗?
  • edit 直接对您的问题进行任何澄清。然后我很确定你可以找到如何在 SQL Server 中获取月份的第一天。

标签: sql sql-server date teradata-sql-assistant


【解决方案1】:

您可以使用EOMONTH 获取当月的最后一天(DATE)。 然后用DATEADD加1天,得到下个月的第一天。
然后从中减去几个月。

select 
DATEADD(month, -7, DATEADD(day, 1, EOMONTH(GETDATE()))) as date1, 
DATEADD(month, -1, DATEADD(day, 1, EOMONTH(GETDATE()))) as date2
date1 date2
2021-07-01 2022-01-01

那么等价的WHERE 子句是这样的:

WHERE COL1 >= DATEADD(month, -7, DATEADD(day, 1, EOMONTH(GETDATE())))
  AND COL1  < DATEADD(month, -1, DATEADD(day, 1, EOMONTH(GETDATE())))

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多