在SQL Server中重新格式化DOB

在SQL Server中重新格式化DOB,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个名为DOB的专栏,里面有出生日期,但格式不好。有些是标准格式,如12/23/1987,有些是1/2/1976,有些是10/3/1988和3/12/1954类型格式 我想让它们都成为标准格式,比如01/03/1987,所以基本上都是mm/dd/yyyy格式。有什么想法吗?试试这样的 测试数据 查询 结果 这是一个varchar字段,它以字符串的形式保存日期值,但有多种不同的格式?您使用的是什么数据库?如果它们是日期,然后,您应该将它们存储在DATE或DATETIME列类型中—没有格式—它只

我有一个名为
DOB
的专栏,里面有出生日期,但格式不好。有些是标准格式,如
12/23/1987
,有些是
1/2/1976
,有些是
10/3/1988
3/12/1954
类型格式


我想让它们都成为标准格式,比如
01/03/1987
,所以基本上都是
mm/dd/yyyy
格式。有什么想法吗?

试试这样的

测试数据 查询 结果
这是一个varchar字段,它以字符串的形式保存日期值,但有多种不同的格式?您使用的是什么数据库?如果它们是日期,然后,您应该将它们存储在
DATE
DATETIME
列类型中—没有格式—它只是一个表示日期属性的8字节二进制文件。这是一个包含所有变量的varchar字段。哎哟,对于一个错误的问题(在本例中是错误的模式),没有任何正确的解决方案:)。我想每个人都会同意我的观点,op需要修复他的模式,而不是找到一个解决方案来清理这个糟糕的模式所造成的混乱:太棒了,他需要某种(部分)解决方案。他不能只是删除专栏或者回家。谢谢大家。是的,这是我继承的,所以我没有去创造它,而是不得不纠正其他人糟糕的计划。谢谢你的回复。我会给它一个快照并重新发布:-)是的,但需要一个脚本来执行和更新命令,以便在可能的情况下永久地重新格式化其中的混乱…在fox pro中,这是可行的。有没有办法转换成tsql?将所有日期替换为“0”+ALLT(日期)!“/”$SUBSTR(ALLT(date_of_bi),3,1)将所有date_of_bi替换为LEFT(ALLT(date_of_bi),3)+“0”+SUBSTR(ALLT(date_of_bi),4)表示!“/”$SUBSTR(所有日期,6,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 ║
╚════════════╩════════════╝