【问题标题】:OpenQuery Date SelectionOpenQuery 日期选择
【发布时间】:2018-02-09 04:38:42
【问题描述】:

我有下面的 openquery 可以正常工作,但现在我只想使用 gl_trans.gl_trans_date 选择事务 >= '2017-07-01' 但无法获得正确的语法。后端数据库是 Informix 我通过谷歌尝试了很多建议但没有成功:(

SELECT *
FROM OpenQuery(PRONTO_L01, 'SELECT 
gl_trans.gl_accountcode,
gl_trans.gl_amount,
gl_trans.gl_trans_date ,
gl_trans.gl_details
FROM gl_trans
WHERE gl_trans.gl_amount <> 0')

【问题讨论】:

    标签: mysql date openquery


    【解决方案1】:

    修改WHERE子句上的查询并添加新的列条件,如下所示。试试这个:

    SELECT *
    FROM OpenQuery(PRONTO_L01, "SELECT 
    gl_trans.gl_accountcode,
    gl_trans.gl_amount,
    gl_trans.gl_trans_date ,
    gl_trans.gl_details
    FROM gl_trans
    WHERE gl_trans.gl_amount <> 0 AND gl_trans.gl_trans_date >= '2017-07-01'")
    

    【讨论】:

    • 对不起,我应该说日期 >= '2107-07-01'
    • 并且该列返回的日期格式为 2017-10-03
    • @fgt 你说的没有道理。顺便说一句,像 '2017-10-23' 这样的字符串传达了明确的信息。像 '2017-10-03' 这样的字符串不会。
    • Hi Strawberry.. 日期格式为 YYYY-MM-DD ,抱歉给您造成混淆..
    • 我的问题是如图所示的openquery没有过滤日期的1000万条记录。
    【解决方案2】:

    问题在于 Informix 日期格式为 MM-DD-2017,使用如下 DATE 函数解决

    gl_trans.gl_trans_date >= DATE('07-01-2017)'"

    【讨论】:

      【解决方案3】:
           I did something like that and it worked.
      
          Declare @date DATETIME = '2017-07-01';
          SELECT *
          FROM OpenQuery(PRONTO_L01, 'SELECT 
          gl_trans.gl_accountcode, 
          gl_trans.gl_amount,
          gl_trans.gl_trans_date ,
          gl_trans.gl_details
          FROM gl_trans
          WHERE gl_trans.gl_trans_date  >= ''''' + 
          CONVERT(CHAR(19), @date, 120) + N'''''''))
      

      【讨论】:

      • 点评来源: 嗨,Stack Overflow 上不鼓励仅代码或仅命令的答案,因为它们没有解释它如何解决问题。请编辑您的答案以解释此代码的作用以及它如何回答问题,以便对有类似问题的人有用。请参阅:How do I write a good answer?。谢谢
      猜你喜欢
      • 2021-07-28
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2019-09-28
      • 2017-05-01
      相关资源
      最近更新 更多