2015-06-03 4 views
0

В файлах, которые я импортирую в базу данных SQL Server, даты форматируются по-разному в разных столбцах. У меня возникли проблемы с (например) 02-06 получения поступило 6 февраля или 2 июня я буду использоватьИзменить формат даты в SQL Server 2012

SELECT [entry_date] = DATE_FORMAT([Date], GET_FORMAT(DATE,'EUR')) 
FROM table_name 

стандартизировать даты внутри базы данных, но я сначала нужен способ, чтобы сказать сервер, что формат даты каждого столбца источника, так что SQL Server будет знать, как изменить дату:

  • 02-06-2015 = дд-мм-гггг
  • 06-02-2015 = мм dd- yyyy
  • 2015-Jun-02 = yyyy-month-dd
+0

Какой формат вы ожидаете ваши окончательные даты в? Не могли бы вы также включить это? – FutbolFan

+0

Это может быть любое, до тех пор, пока оно непротиворечиво. dd-mm-yyyy, скорее всего. – jjjjjjjjjjj

+0

Вы можете рассмотреть функцию Parse и применить это к дате ввода в своем запросе: http://msdn.microsoft.com/en-us/library/hh213316.aspx – russ

ответ

0

Вы могли бы сделать что-то вроде этого, если каждый из столбцов отформатированы по-разному:

select convert(varchar,cast('06-02-2015' as date) ,105) col1 
     ,convert(varchar,cast('02-06-2015' as date) ,110) col2 
     ,convert(varchar,cast('2015-Jun-02' as date),105) col3 

Resultset:

|col1  ||  col2  ||  col3  | 
|02-06-2015 ||  02-06-2015 ||  02-06-2015| 
+0

Это работает на сервере, но полностью разбивает пакет SSIS, используемый для импорта данных. SSIS перемещает исходные данные в промежуточную таблицу, затем я использую сценарий с преобразованиями даты в триггере для форматирования и перемещения данных в основную таблицу. Он сообщает мне, что «Конверсия не удалась при преобразовании даты и/или времени из символьной строки». – jjjjjjjjjjj

+0

Извините, я только что видел это, какая часть части SSIS вы используете это преобразование? Это когда вы загружаете промежуточную таблицу или пост-стадию во время окончательной загрузки? Не то, чтобы это могло иметь значение, но единственная причина, по которой я думаю, что вы получите эту ошибку, - это то, что ваши данные неверно «отформатированы» для преобразования в фактическую дату. – FutbolFan

+0

Все данные Excel имеют правильный формат. Я проверил внимательно. Преобразование происходит между промежуточной таблицей и основной таблицей. Все это nvarchar до окончательного перехода в основную таблицу, которая имеет формат даты для этого столбца.Я получаю ошибки даты еще, когда данные находятся в формате nvarchar, что странно. – jjjjjjjjjjj

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