Использование функции TO_CHAR в SQL Server - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу выполнить этот запрос:

SELECT *
FROM Production
WHERE TO_CHAR(Time_Stamp, "DD/MM/YYYY") = current_date
AND TO_CHAR(Time_STAMP, "HH:MM:SS") BETWEEN "00:00:00" AND "07:00:00"

Мое поле Time_Stamp выглядит следующим образом: "DD/MM/YYYY HH:MM:SS"

К сожалению, функция TO_CHAR не существует в SQL Server.

Как я могу преобразовать свой запрос, чтобы он мог работать на SQL Server?

Ответы [ 3 ]

4 голосов
/ 06 ноября 2019

В SQL Server нет TO_CHAR. Если вам нужно передать дату, используйте форматы ISO yyyyMMdd или yyyy-MM-ddThh:mm:ss.sssssss или на какое-то время просто hh:mm:ss.sssssss.

Однако, учитывая, что, похоже, у вас есть значения на сегодня (я полагаю,это то, что current_date), похоже, что вы хотите это:

SELECT *
FROM Production
WHERE Time_Stamp >= DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
  AND Time_Stamp < DATEADD(HOUR,7,DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0));
3 голосов
/ 06 ноября 2019

вы можете использовать cast()

SELECT *
FROM Production
WHERE cast(Time_Stamp as date) = cast(getdate() as date)
AND cast(Time_STAMP as time(0)) BETWEEN "00:00:00" AND "07:00:00"
1 голос
/ 06 ноября 2019

Альтернативный метод:

SELECT *
FROM Production
WHERE Time_Stamp >= CONVERT(DATE, GETDATE()) AND
      Time_Stamp < DATEADD(HOUR, 1, CONVERT(datetime, CONVERT(DATE, GETDATE())));

В этой формулировке для сравнения как данных, так и времени можно использовать индекс TIME_STAMP.

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