所以我试图将我的日期列数据类型从varchar
转换为date
。
目前我的日期格式为d/m/yyyy
,我想转换为标准mm/dd/yyyy
这是我正在运行的脚本
update [table]
set [PERIOD]= CONVERT(varchar(20),cast([PERIOD] as date),101)
但我收到错误
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
任何提示还是我被困?
答案 0 :(得分:3)
我建议您不要将一个字符串日期更新为其他格式的字符串日期,而是添加新的DATE
或DATETIME
字段以正确存储日期。
ALTER [table] ADD Proper_Date DATE
GO
UPDATE [table]
SET Proper_Date = convert(date, [PERIOD], 103)
如果必须,您可以将上述内容包含在另一个CONVERT()
:
update [table]
set [PERIOD]= CONVERT(varchar(20),convert(date,[PERIOD], 103),101)
答案 1 :(得分:0)
我认为如果您可以使用子字符串或任何其他字符串函数来隔离日,月和年,那么请使用以下查询
update tableA
set period = convert(datetime,cast(day(1)as varchar)+'/'+cast(MONTH(1)as varchar)+'/2014',102)
希望它的作品。
答案 2 :(得分:0)
您可能有垃圾值,可以通过执行以下查询来获取垃圾值
SELECT [PERIOD]
FROM YOURTABLE
WHERE ISDATE([PERIOD]) = 0
要避免垃圾值并更新其余部分,请尝试以下
update YOURTABLE
set [PERIOD]= CONVERT(varchar(20),cast([PERIOD] as date),101)
WHERE ISDATE([PERIOD]) = 1
答案 3 :(得分:-1)
试试这个。
update [table]
set [PERIOD]= CONVERT(varchar(20),CONVERT(date,[PERIOD] ,103),101)
您的查询中的问题是
cast([PERIOD] as date)
您无法直接将d/m/yyyy
格式转换为date
。因此,请使用103
样式进行转换