MS SQL версия запроса TO_DATE - PullRequest
0 голосов
/ 28 января 2020

У меня есть запрос, чтобы просмотреть детали таблицы

select APPLICATION_NAME,
SOURCE,
IDENTITY_NAME,
IDENTITY_DISPLAY_NAME,
NATIVE_IDENTITY,
ACCOUNT_DISPLAY_NAME,
OPERATION,
STATUS,
CREATED, 
(TO_DATE('1970-01-01','YYYY-MM-DD') + created / 86400000) AS CREATED_DATE

Похоже, этот запрос для MySQL. Тем не менее, наша база данных находится в Microsoft SQL. Следовательно, я получаю ошибку ниже при выполнении запроса

'TO_DATE' не является распознанным именем встроенной функции.

Не могли бы вы предложить эквивалентную команду TO_DATE и как его изменить в приведенном выше запросе

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Вы можете использовать DATEADD для добавления в datetime и CONVERT, чтобы установить для вашей строки тип Datetime:

--Using the DateAdd to add parts to the date and Tehe CONVERT to set your string to a datetime
    SELECT DATEADD(MS, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Milliseconds
    SELECT DATEADD(S, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Seconds
    SELECT DATEADD(N, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Minutes
    SELECT DATEADD(HH, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Hours
    SELECT DATEADD(D, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Days
0 голосов
/ 28 января 2020

Похоже, created - это отметка времени эпохи, хранящаяся в миллисекундах (86400000 - это количество миллисекунд в одном дне). Если это так, я думаю, что вы хотите:

DATEADD(ms, created, '1970-01-01') AS CREATED_DATE

Примечание: TO_DATE() это синтаксис Oracle, а не MySQL. Самая важная вещь, которую нужно изменить в исходном запросе, - арифметика дат: Oracle позволяет добавлять дни к date, тогда как большинство других баз данных этого не делают. С другой стороны, SQL Сервер не поддерживает стандартную интервальную арифметику (нам нужно использовать DATEADD()).

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