繁体   English   中英

在Excel中的ODBC中与今天的日期和时间戳进行比较?

[英]Date and time stamp comparison with today in ODBC in Excel?

我正在通过Excel ODBC查询数据库。

我可以使用以下命令Excel的ODBC查询中 将该字段与硬编码日期进行比较

BOMD.BOMENDDAT_0 > {ts '2018-05-05 00:00:00'}

但是我似乎无法与当前日期进行适当的比较

BOMD.BOMENDDAT_0 > {ts SYSDATETIME()}
DATEDIFF(d, SYSDATETIME(), BOMD.BOMENDDAT_0) > 0

有什么建议吗?


上下文

我正在尝试建立一个查询,该查询仅选择今天的日期介于之间的记录:

  • 开始日期( BOMD.BOMSTRDAT_0
  • 结束日期( BOMD.BOMENDDAT_0

那些日期:

  • 格式特殊,在Excel中看起来像这样: '26/02/2018 00:00:00'
    (法语格式, 年月日
  • 可以装满
  • 0似乎是'00/01/1900 00:00:00'

整个查询如下所示:

SELECT BOMD.BOMQTY_0, BOMD.UPDDAT_0, BOMD.BOMSTRDAT_0, BOMD.BOMENDDAT_0
FROM myDB.BOMD BOMD
WHERE BOMD.UPDDAT_0 > {ts '2018-01-01 00:00:00'}
AND (
    (BOMD.BOMSTRDAT_0 < {ts SYSDATETIME()})
    OR BOMD.BOMSTRDAT_0 = 0
    OR BOMD.BOMSTRDAT_0 is null
    )
AND (
    (BOMD.BOMENDDAT_0 > {ts SYSDATETIME()})
    OR BOMD.BOMENDDAT_0 = 0
    OR BOMD.BOMENDDAT_0 is null
    )

{ts '2018-05-05 00:00:00'}用于将字符串转换为日期时间数据类型,您不能在已为日期时间(精确为datetime2)数据类型的SYSDATETIME()上使用它,只需使其:

SELECT BOMD.BOMQTY_0, BOMD.UPDDAT_0, BOMD.BOMSTRDAT_0, BOMD.BOMENDDAT_0
FROM myDB.BOMD BOMD
WHERE BOMD.UPDDAT_0 > {ts '2018-01-01 00:00:00'}
AND (
    (BOMD.BOMSTRDAT_0 < SYSDATETIME())
    OR BOMD.BOMSTRDAT_0 = 0
    OR BOMD.BOMSTRDAT_0 is null
    )
AND (
    (BOMD.BOMENDDAT_0 > SYSDATETIME())
    OR BOMD.BOMENDDAT_0 = 0
    OR BOMD.BOMENDDAT_0 is null
    )

顺便说一句,您的代码还将返回BOMENDDAT_0BOMSTRDAT均为零或为null的行,这真的是预期的行为吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM