在SQL中转换日期时间格式

时间:2015-09-08 14:30:58

标签: sql sql-server-2008

我正在尝试将Aug/14/2014转换为2014-08-14,但无法使其工作并抛出错误。有人可以建议。

 Update test
    set UserDATE =convert(nvarchar(10), cast(UserDATE as datetime),105)
  

错误:将nvarchar数据类型转换为日期时间数据类型   导致了超出范围的价值。

4 个答案:

答案 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日没有合适的风格。

所以,你的选择是:

  1. 将您在“2015年8月14日”捕获的代码更改为“2015年8月14日”,然后使用样式107。

  2. 如果出于某种原因无法使用#1,则可能需要进行字符串操作并将“2015年8月14日”转换为“2015年8月14日”,然后使用样式107

  3. 请参阅https://msdn.microsoft.com/en-IN/library/ms187928.aspx