Сравнение даты и времени с сегодняшним днем ​​в ODBC в Excel? - PullRequest
0 голосов
/ 14 мая 2018

Вопрос

Я запрашиваю базу данных через Excel ODBC.

Я могу сравнить поле с жестко заданной датой в моем запросе ODBC Excel с:

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
    )

1 Ответ

0 голосов
/ 14 мая 2018

{ts '2018-05-05 00:00:00'} используется для преобразования строки в тип данных datetime, вы не можете использовать ее для SYSDATETIME(), который уже является типом данных datetime (точно datetime2), просто сделайте это:

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 являются нулями или нулями. Это действительно предполагаемое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...