【问题标题】:ssms to oracle openquery DATEADDssms 到 oracle openquery DATEADD
【发布时间】:2019-03-06 21:36:32
【问题描述】:

刚开始使用 Openquery 并尝试从当月和上月提取数据。 通常我只会使用 DATEADD 来获取特定日期,但 OpenQuery 似乎不喜欢它。关于如何从当月和上月拉取的任何提示?

这是我到目前为止所尝试的。

SELECT * FROM OPENQUERY(TestServer,'

        SELECT name
            ,number
            ,create_date
            ,carton
            ,trailer
            ,bol
        FROM TEST.TESTING_VIEW1 TestV
        WHERE (TestV.create_date>=DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0) OR TestV.create_date IS NULL)
    ')

【问题讨论】:

  • 该查询在 Oracle 服务器上运行,Oracle 没有 dateadd(),您可以改用 current_date - interval '1' month,或 add_month(current_date, -1)

标签: sql oracle openquery


【解决方案1】:

你可以使用:

SELECT * 
FROM OPENQUERY(TestServer,'
        SELECT name
            ,number
            ,create_date
            ,carton
            ,trailer
            ,bol
        FROM TEST.TESTING_VIEW1 TestV
        WHERE (TestV.create_date>= add_months(TRUNC(current_date,''MONTH''), -1) 
           OR TestV.create_date IS NULL)
    ');

SQL Server 到 Oracle:

DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)
<=> 
add_months(TRUNC(current_date,'MONTH'), -1) 

db<>fiddle demo

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2018-11-28
    • 2022-01-02
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多