我们有一个需要导入的文件,其中包含日期。这些日期的格式是我以前没见过的,日期部分的长度可能不同(但不是看似月份或年份)和基于数字是否为两位数的位置,即
日期:
13082014 is 13th February 2014
9092013 is 9th September 2013
当前脚本尝试将部分子串出来,但由于没有足够的数据而在第二个部分失败。我可以写一个if或case来检查长度,但是有一种SQL格式可以用来可靠地导入这些数据吗?
澄清这是MSSQL,日期格式为ddmmyyyy或dmmyyyy
答案 0 :(得分:2)
其中一个简单的方法是使用STUFF。
示例:
select STUFF(STUFF('13082014 ',3,0,'/'),6,0,'/');
//result: 13/08/2014
祝你好运。
答案 1 :(得分:1)
LPAD在缺少时为零,因此总是得到一个八字符的日期字符串。以下是Oracle的一个示例,其他DBMS可能还有其他字符串和日期函数来实现相同的功能。
select to_date(datestring, 'ddmmyyyy')
from
(
select lpad('13082014', 8, '0') as datestring from dual
union all
select lpad('9092013', 8, '0') as datestring from dual
);
结果:
13.08.2014 09.09.2013
答案 2 :(得分:0)
您可以将日期转换为相关日期格式,然后导入数据(基于dateformat更改逻辑)
这样的事情:
select Convert(varchar(10),CONVERT(date,YourDateColumn,106),103)