SQL SERVER转换日期格式

时间:2017-06-22 02:30:23

标签: sql sql-server database datetime date-format

现在在列存储字符串中有三种不同的格式。例如

  • 2/04/15 9.30-12
  • 10/01/2015上午10点 - 下午1点
  • 17/03/15 1st appt

如何将所有日期转换为合并到标准日期,如ddmmyyy?使用左10是不合适的。

2 个答案:

答案 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;

输出是:

enter image description here

也会尝试找出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日。