2012-04-27 3 views
0

Как преобразовать строку 'Fri, 9 марта 2012 10:43:21 +0000 (UTC)', сохраненный как varchar(max), в значение datetime '09 -03 -2012 ', который является частью даты строки?Как извлечь дату из даты и времени, сохраненной как varchar

+0

Что такое тип данных в БД? Это 'datetime'? – dsolimano

+1

Возможный дубликат [Как вернуть часть даты только из типа данных datetime SQL Server] (http://stackoverflow.com/questions/113045/how-to-return-the-date-part-only-from-a- sql-server-datetime-datatype) – dsolimano

+0

Нет, столбец имеет varchar (max). –

ответ

0

В соответствии с МС: http://msdn.microsoft.com/en-us/library/ms187928.aspx

Функция CONVERT() является общей функцией, которая преобразует выражение одного типа данных в другой. Функция CONVERT() может использоваться для отображения данных даты и времени в разных форматах.

и таблица перечисляет 105 как код для стиля, который вы хотите.

Таким образом, для даты, например:

CONVERT(VARCHAR(10), 'Fri, 9 Mar 2012 10:43:21 +0000 (UTC)', 105) 

, вероятно, следует сделать трюк.

0

мне пришлось крошить дату первого, но здесь идет:

DECLARE @ds varchar(30)='Fri, 9 Mar 2012 10:43:21 +0000 (UTC)'; 
SELECT CONVERT(VARCHAR(10) 
,CAST(SUBSTRING(@ds 
,CHARINDEX(' ',@ds) 
,LEN(@ds)-(PATINDEX('%[0-9][0-9][0-9][0-9]%',@ds)+6)) 
AS DATETIME) 
,105  
) 

Результат:

09-03-2012 
+0

Почему голос? Не работает ли это? Если у вас есть идея, вы можете поделиться ею. –

0

Если у вас есть SQL Server 2012, вы можете попробовать это:

выберите CONVERT (дата, TRY_PARSE ('пт, 9 марта 2012 10:43:21 +0000' AS datetime2))

ПРИМЕЧАНИЕ: (UTC) удаляется, он не анализируется правильно.

Кроме того, имейте в виду, что вам нужно локализовать это значение времени. Например, я живу в AZ, поэтому обычно я просто вычитаю -7 часов с UTC, чтобы локализовать. Вам нужно будет сделать аналогичные настройки на основе часового пояса

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