我正在尝试将Aug/14/2014
转换为2014-08-14
,但无法使其工作并抛出错误。有人可以建议。
Update test
set UserDATE =convert(nvarchar(10), cast(UserDATE as datetime),105)
错误:将nvarchar数据类型转换为日期时间数据类型 导致了超出范围的价值。
答案 0 :(得分:0)
尝试使用空格替换斜杠并使用样式100进行转换为日期:
v.0.99.451
但是,如果您要将日期存储为字符串 - 我不建议这样做 - 那么请使用ISO标准格式:YYYY-MM-DD或YYYYMMDD。在SQL Server中,格式为112,120或121,而不是105。
答案 1 :(得分:0)
SQL Server不了解该日期格式,因此cast
将无法解析它。
将其转换为格式'Aug 14 2014'
,您可以使用格式109进行解析。
格式yyyy-mm-dd
的代码为120。
update
test
set
UserDATE = convert(
nvarchar(10),
convert(datetime, replace(UserDATE, '/', ' '), 109),
120
)
答案 2 :(得分:0)
由于UserDATE
日期格式,您收到错误。
删除/
以获取正确的日期格式。
cast(replace(UserDATE, '/', ' ') as datetime)
如果您希望在yyyy-mm-dd
中使用120
而不是105
。
Update test
set UserDATE =convert(nvarchar(10), cast(replace(UserDATE, '/', ' ') as datetime),120)
答案 3 :(得分:0)
根据Brandy Tech的评论,105是错误的风格。事实上,2014年8月14日没有合适的风格。
所以,你的选择是:
将您在“2015年8月14日”捕获的代码更改为“2015年8月14日”,然后使用样式107。
如果出于某种原因无法使用#1,则可能需要进行字符串操作并将“2015年8月14日”转换为“2015年8月14日”,然后使用样式107