在SQL Server中重新格式化DOB

时间:2014-08-24 18:05:10

标签: sql sql-server tsql

我有一个名为DOB的专栏,其中包含出生日期,但版本质量较差。有些是标准的12/23/1987,有些是1/2/1976,有些10/3/19883/12/1954类型格式。

我希望将它们全部标准化为01/03/1987,所以基本上都是mm/dd/yyyy格式。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情......

测试数据

DECLARE @Dates TABLE( DOB  VARCHAR(20))

INSERT INTO @Dates VALUES
('12/23/1987'),   ('1/2/1976'),
('3/12/1954'),    ('10/3/1988')

查询

SELECT DOB 
      ,CASE WHEN ISDATE(DOB) = 1 
              THEN CONVERT(VARCHAR(10), CAST(DOB AS DATETIME), 101) 
            ELSE NULL 
       END AS Formatted  
FROM @Dates

结果

╔════════════╦════════════╗
║    DOB     ║ Formatted  ║
╠════════════╬════════════╣
║ 12/23/1987 ║ 12/23/1987 ║
║ 1/2/1976   ║ 01/02/1976 ║
║ 3/12/1954  ║ 03/12/1954 ║
║ 10/3/1988  ║ 10/03/1988 ║
╚════════════╩════════════╝