我有一个文本文件,其中我以英国格式创建日期,即'08 / 01/2014'。我使用派生列来确保日期的格式保持不变并使用类型转换为日期
(DT_DBDATE) (SUBSTRING(VOUCHER_DATE,1,2) + "-" + SUBSTRING(VOUCHER_DATE,4,2)
+ "-" + SUBSTRING(VOUCHER_DATE,7,4))
所以它应该在08/01/2014(年/月/日)回复日期,但它将它转换为01/08/2014。它只转换小于10的日期。如果日期是11或12或13它就像12/01/2014一样好。
参见图中的示例。 1月9日正在转换为9月1日,同时1月22日也没事。
01/09/2014
01/09/2014
22/01/2014
22/01/2014
22/01/2014
22/01/2014
知道为什么吗?
答案 0 :(得分:0)
我认为你做错了,DT_DBDATE
格式为yyyy-mm-dd
link。
所以它应该是:
(DT_DBDATE) (SUBSTRING(VOUCHER_DATE,7,4) + "-" + SUBSTRING(VOUCHER_DATE,4,2) + "-" +
SUBSTRING(VOUCHER_DATE,1,2))
来源:
SELECT N'08/01/2014' as VOUCHER_DATE
UNION ALL
SELECT N'01/08/2014'
结果:
VOUCHER_DATE Stringtodate
08/01/2014 2014.01.08
01/08/2014 2014.08.01