现在在列存储字符串中有三种不同的格式。例如
如何将所有日期转换为合并到标准日期,如ddmmyyy?使用左10是不合适的。
答案 0 :(得分:1)
以下是我的SQL2012解决方案:
DECLARE @Date AS TABLE(val VARCHAR(30));
INSERT INTO @Date VALUES('2/04/15 9.30-12');
INSERT INTO @Date VALUES('10/01/2015 10am - 1pm');
INSERT INTO @Date VALUES('17/03/15 1st appt');
SELECT TRY_PARSE(LEFT(val, CHARINDEX(' ', val)) AS DATE USING 'en-gb') AS Date FROM @Date;
输出是:
也会尝试找出2008年的东西。可能。
答案 1 :(得分:0)
使用try_convert()
。再次try_convert()
。也许是这样的事情:
select coalesce(try_convert(date, left(col, charindex(' ', col + ' ') - 1), 1),
try_convert(date, left(col, charindex(' ', col + ' ') - 1), 101),
try_convert(date, left(col, charindex(' ', col + ' ') - 1), 103),
. . .
) as dte
from t;
继续尝试不同的风格。请注意这些是有序的。因此,您必须确定02/01/2012
是2月1日还是1月2日。