我有一个名为NAMES的表在nvarchar
中有一个DOB列,由于某种原因它不会转换为日期,只要我可以运行一段代码来转换它就可以了,这实际上更可取。所以这就是困境......有些日期是m/d/yyyy
,有些是mm/dd/yyyy
。
示例:
2/4/1986
10/8/1999
4/24/1988
12/13/1975
我想运行一段代码将所有内容转换为标准mm/dd/yyyy
格式。提前谢谢你......
答案 0 :(得分:0)
尝试:
select convert(nvarchar,convert(date,dt,101),101) as dt
from tbl;
小提琴: http://sqlfiddle.com/#!3/8faf1/7/0
如果您想转换为实际日期值,请更简单地运行:
select convert(date,dt,101) as dt
from tbl;
答案 1 :(得分:0)
在您提到的问题中,您无法转换为正确的日期(我猜这是由于数据无效),并且您很乐意将其保留为字符值。
虽然我认为正确的操作是修复无效值并将列转换为正确的日期(时间)类型,但这可能是不可能的。
如果你真的需要"修复"然后你可以使用字符串函数进行更新:
update NAMES
set DOB =
case len(DOB)
when 8 then '0' + stuff(DOB,3,0,'0')
else
case charindex('/',DOB)
when 2 then '0' + DOB
else stuff(DOB,4,0,'0')
end
end
where len(DOB) < 10
请注意,它可能无法在大型数据集上获得最佳效果。