Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 日期和时间戳与Excel中ODBC中的今天的比较? 问题:_Sql_Excel_Tsql_Odbc - Fatal编程技术网

Sql 日期和时间戳与Excel中ODBC中的今天的比较? 问题:

Sql 日期和时间戳与Excel中ODBC中的今天的比较? 问题:,sql,excel,tsql,odbc,Sql,Excel,Tsql,Odbc,我正在通过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 有什么建议吗? 上下文 我正在尝试构建一个查询,仅选择今天

我正在通过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\u 0
  • 结束日期(
    BOMD.BOMENDDAT\u 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
    )
选择BOMD.BOMQTY_0、BOMD.UPDDAT_0、BOMD.BOMSTRDAT_0、BOMD.BOMENDDAT_0
从myDB.BOMD BOMD
其中BOMD.UPDDAT_0>{ts'2018-01-01 00:00:00'}
及(
(BOMD.BOMSTRDAT_0<{ts SYSDATETIME()})
或BOMD.BOMSTRDAT_0=0
或BOMD.BOMSTRDAT_0为空
)
及(
(BOMD.BOMENDDAT_0>{ts SYSDATETIME()})
或BOMD.BOMENDDAT_0=0
或BOMD.BOMENDDAT_0为空
)

{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
    )
选择BOMD.BOMQTY_0、BOMD.UPDDAT_0、BOMD.BOMSTRDAT_0、BOMD.BOMENDDAT_0
从myDB.BOMD BOMD
其中BOMD.UPDDAT_0>{ts'2018-01-01 00:00:00'}
及(
(BOMD.BOMSTRDAT_0SYSDATETIME())
或BOMD.BOMENDDAT_0=0
或BOMD.BOMENDDAT_0为空
)

顺便说一句,您的代码还将返回
BOMENDDAT_0
BOMSTRDAT
都是零或空的行,这是真正的预期行为吗?

很抱歉,接受晚了,您的回答终于帮助我实现了这一点!我强制以文本形式显示日期“0”,并添加了
BOMD.BOMSTRDAT_0={ts'1753-01-01 00:00:00'}
。是的,我对“管理”规则不负责,所以这确实是我的预期行为;)非常感谢!