2015-06-03 67 views
0

在我导入到SQL Server数据库的文件中,日期在不同列中的格式不同。我一直有问题,用(例如)02-06得到输入为2月6日和6月2日,我将使用在SQL Server 2012中更改日期格式

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

规范数据库中的日期,但我首先需要一种方法来告诉服务器是什么每个源列的日期格式,所以SQL Server将知道如何重新安排日期:

  • 2015年2月6日= DD-MM-YYYY
  • 2015年6月2日= MM-DD- yyyy
  • 2015-Jun-02 = yyyy-month-dd
+0

什么格式,你希望你的最终日期吗?你能否也包括这一点? – FutbolFan

+0

它可以是任何,只要它是一致的。 dd-mm-yyyy最有可能。 – jjjjjjjjjjj

+0

您可以考虑解析函数并将其应用于查询中的输入日期: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 

结果集:

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

这适用于服务器,但彻底打破了用于导入数据的SSIS包。 SSIS将源数据移动到登台表,然后在触发器中使用包含日期转换的脚本来格式化数据并将其移动到主表中。它告诉我“从字符串转换日期和/或时间时转换失败。” – jjjjjjjjjjj

+0

对不起,我刚刚看到了这一点,SSIS部分的哪一部分是你在使用此转换?它是在最终加载期间加载临时表还是后期临时存储?不是说它可能会有所作为,但是我认为你会得到这个错误的唯一原因是如果你的数据没有被正确地“格式化”以转换为实际的日期。 – FutbolFan

+0

所有的Excel数据都有正确的格式。我仔细检查。转换发生在临时表和主表之间。一切都是nvarchar,直到最后移动到主表中,该主表具有该列的日期格式。当数据处于nvarchar格式时,我仍然得到日期错误,这很奇怪。 – jjjjjjjjjjj