SQL как преобразовать строковое значение MM-DD-YYYY в дату - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть переменная datetime в строковом формате в следующей форме:

01-04-2020 11:50:44:569
01-03-2020 12:50:44:589
01-03-2020 01:50:44:579

Как извлечь часть даты и выбрать диапазон дат?

Я пытался использовать:

cast(substring(value,1,10) as date) as date1
date1 between '2020-01-01' and '2020-01-05'

Но он возвращает 0 записей.

Однако этот код работал со строковым значением даты и времени в следующем формате:

2020-01-03T11:50:24:529Z

Он извлечет часть даты и сохранить его как метку времени и извлечь записи в пределах диапазона, но не работает в первом примере.

Я просто пытаюсь найти метод для преобразования строкового значения в значение даты, я не собираюсь никого путать. Что касается образца набора данных, я думаю, что первой части вопроса с 3 записями должно быть достаточно для тестирования, потому что все значения в одной переменной все в одном формате.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Похоже, что поле просто в формате datetime, и я считаю, что просто приведение к дате может помочь:

cast(value as date) between '2020-01-01' and '2020-01-05'

Я проверил его на примере строки и, похоже, он работает:

DECLARE @date char(25)
SET @date = '01-04-2020 11:50:44:569'

select cast(@date as date)
0 голосов
/ 19 февраля 2020

Кажется, я понял это:

cast(to_date((FROM_UNIXTIME(UNIX_TIMESTAMP(value, "MM-dd-yyyy HH:mm:ss:SSS"), "yyyy-MM-dd HH:mm:ss.SSS"))) as date) as date1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...