我正在通过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
)那些日期:
'26/02/2018 00:00:00'
'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
)
答案 0 :(得分:1)
{ts '2018-05-05 00:00:00'}
用于将字符串转换为日期时间数据类型,您不能在已经是日期时间(正是日期时间2)的数据类型的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_0
和BOMSTRDAT
为零或空的行,真的预期的行为?