2012-07-26 2 views
0

У меня есть дату в виде VARCHAR в видеКакой формат даты и времени, чтобы использовать SQL Server

DD/MM/YYYY HH:MM:SS AM 

например

16/3/2012 4:39:26 PM 

Я не могу видеть правильный вариант формата для CONVERT() в MSDN page

я упускаю что-то или мне придется переформатировать поле VARCHAR первым?

Edit:

исправлен формат, жаль о том, что

+3

@AaronBertrand - Это будет hextember. –

+0

@MattWhitfield Мне придется поместить это в свой календарь. –

+0

ОК, так что предыдущее ОБНОВЛЕНИЕ для преобразования греческих букв в AM/PM было проблемой. Спасибо за ответы, но я должен был изучить проблему немного больше. – Jaloopa

ответ

5

После того, как вы получите свою историю прямо, вы хотите один из них:

-- if you really meant dd/mm/yyyy then: 

SELECT CONVERT(DATETIME, '16/3/2012 4:39:26 PM', 103); 

-- if you really meant mm/dd/yyyy then: 

SELECT CONVERT(DATETIME, '3/16/2012 4:39:26 PM', 101); 

Но согласился с Madhivanan. Не храните даты с использованием неправильного типа данных, и если необходимо, используйте недвусмысленный формат!

+0

Ответил на вопрос, который я задал, хотя это оказался неправильный вопрос. – Jaloopa

3
  1. Всегда используйте правильное DATETIME тип данных для хранения даты
  2. YYYYMMDD и YYYYMMDD HH:MM:SS однозначны форматов даты

Для получения дополнительной информации см это

http://beyondrelational.com/modules/2/blogs/70/posts/10898/understanding-datetime-column-part-ii.aspx

+0

К сожалению, это импорт из файла, в котором я не контролирую. В противном случае я хотел бы использовать однозначный формат – Jaloopa

-2

Это будет работать.

DECLARE @dt varchar(100)='2012/3/16 4:39:26 PM' 
select convert(datetime,@dt,101) 
+1

Но это ** не ** формат ввода (строка), который OP имеет ..... –

+0

use 103 as option in convert function – AnandPhadke

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