2013-05-21 2 views
8

У меня есть столбец, это текст:Как преобразовать текст столбец DateTime в SQL

Примечания (текст, NULL)

Значение образца является «5/21/2013 9:45:48 AM "

Как преобразовать его в формат даты и времени, как это:„2013-05-21 09: 45: 48,000“

причиной обращения является то, что я пытался получить общее количество часов между столбцом datetime и отметкой даты в столбце «Примечания». Я имел в виду что-то вроде этого:

Примечания (текст, пустой) - Date_Sent (DateTime, нуль)

Чтобы быть ясно, столбцы представляют DateTime запрос от клиента был послан (Date_Sent) и последний ответ, сделанный представителем относительно запроса (ответа), поэтому для образца Date_Sent, имеющего значение «2013-05-21 08: 00: 00 000» и ответ со значением «5/21/2013 10 : 00: 00 AM ", я должен получить значение 2,00 (2 часа). К сожалению, в базе данных, над которой я работаю, Remarks - это текст, а Date_Sent - дата-время.

Я вроде новичок в SQL, так что я действительно нужна помощь на этом :(ТИА!

+0

вам нужно конвертировать на стороне программирования. Просто предложение. – KSHiTiJ

+0

Какие СУБД вы используете (SQL Server, Oracle ...)? –

+0

Функция to_date или эквивалент в SQL, который вы используете. –

ответ

10

Использование convert со стилем 101.

select convert(datetime, Remarks, 101) 

Если столбец действительно text вам нужно преобразовать в VARCHAR перед преобразованием в DateTime

select convert(datetime, convert(varchar(30), Remarks), 101) 
+1

Это лучший ответ. Это позволит избежать двусмысленности при анализе дат ввода типа '1/4/2013'. Стиль 101 -' мм/dd/yyyy', поэтому он всегда будет анализироваться как 4 января и никогда не будет 1 апреля. –

+0

select convert ('01/01/2017 ', примечания, 101) OR – SurajS

+0

Спасибо за добавление Примечания о том, где разместить поле – Jay

5

В SQL Server, отлитый текст, как DateTime

select cast('5/21/2013 9:45:48' as datetime) 
+0

Это дает мне эту ошибку: Msg 241, Level 16, State 1, строка 1 Преобразование не удалось при преобразовании даты и/или времени из символьной строки. :( – Poch

0

Это работает:

SELECT STR_TO_DATE(dateColumn, '%c/%e/%Y %r') FROM tabbleName WHERE 1