2013-12-06 3 views
1

Простой вопрос не может показаться правильным.Преобразование строки в datetime в SQL Server 2008

У меня есть таблица с датой в этом формате 20/09/2012 как varchar.

мне нужно преобразовать в datetime

Пробовал различные решения, но не может получить это право.

Любые предложения?

Благодаря

+1

Вы пытались 'CONVERT (datetime, '2012/09/20 00:00:00', 120)'? Также для параметров форматирования даты вы можете проверить http://msdn.microsoft.com/en-us/library/ms187928.aspx – MusicLovingIndianGirl

+3

Хранить его как 'DATETIME' в первую очередь ... –

+0

Использование' convert (datetime, ' 20/09/2012 ', 103) ', кажется, работает для меня. – jpw

ответ

3

Использование функции CONVERT со стилем 103 (британский/европейский), кажется, работает для меня:

DECLARE @input VARCHAR(20) = '20/09/2012' 

SELECT 
    CONVERT(DATETIME, @input, 103) 

При таком подходе, вы можете конвертировать все ваши VARCHAR даты их надлежащего типа данных - DATETIME - и храните их как DATETIME в первую очередь ....

Просмотреть Aaron Bertrand отличное сообщение в блоге на bad habits to kick : mis-handling date/range queries для получения дополнительной информации о том, почему это ' s действительно очень плохо держать даты хранения как VARCHAR столбцов ....

+3

+1 для скорости ввода, я не могу напечатать это быстро! –

+0

Привет, спасибо, что работал. В то время это может быть сложно – user9969

Смежные вопросы