繁体   English   中英

在SQL中转换日期时间格式

[英]Convert Date time format in SQL

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

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

错误:将nvarchar数据类型转换为datetime数据类型导致值超出范围。

尝试用空格替换斜杠,并使用样式100转换为日期:

Update test 
    set UserDATE = convert(nvarchar(10), convert(date, replace(UserDate, '/', ' '), 100), 105)

但是,如果您将日期存储为字符串(我不建议这样做),则请使用ISO标准格式:YYYY-MM-DD或YYYYMMDD。 在SQL Server中,格式为112、120或121,而不是105。

SQL Server不了解该日期格式,因此cast将无法解析它。

将其转换为格式'Aug 14 2014' ,可以使用格式109进行解析。

格式yyyy-mm-dd的代码为120。

update
  test
set
  UserDATE = convert(
    nvarchar(10),
    convert(datetime, replace(UserDATE, '/', ' '), 109),
    120
  )

由于UserDATE日期格式,您收到此错误。
删除/以获取正确的日期格式。

cast(replace(UserDATE, '/', ' ') as datetime)

如果要在yyyy-mm-dd使用日期,请使用120而不是105

Update test  
set UserDATE =convert(nvarchar(10), cast(replace(UserDATE, '/', ' ') as datetime),120)

根据白兰地技术公司的评论105是错误的样式。 实际上,2014年8月14日没有合适的风格。

因此,您的选择是:

  1. 将捕获“ Aug / 14/2015”的代码更改为“ Aug 14,2015”,然后使用样式107。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM