SQL 服务器 - 如何更改日期时间格式



我的表中有一个nvarchar(max)类型的RegDate列,其中日期以mm/dd/yyyy(5/22/2015 11:09:39 PM)和dd-mm-yyyy(19-05-2015 22:55:05)格式存储。我想以一种格式获取所有这些条目,即 dd/mm/yyyy .我尝试使用

Convert(varchar(10),cast(vr.RegDate as DATETIME),105) as RegistrationDate

但它给出了以下错误:

nvarchar 数据类型转换为日期时间数据类型会导致值超出范围。

请帮助我解决这个问题。

您需要先确定要转换的值的格式,然后才能转换它。如果它只是介于这两种格式之间,您只需搜索-即可确定其格式。

我还建议将值存储在datetime列而不是varchar中,如果出于某种原因无法做到这一点,则绝对应该将其存储在ISO格式中:YYYY-MM-DD HH:MM:SS

下面是一个示例,该示例使用 case 语句提供两种日期格式的可选格式,使用 - 字符的存在:

CREATE TABLE #temp ( RegDate VARCHAR(50) )
INSERT  INTO #temp
        ( RegDate )
VALUES  ( '5/22/2015 11:09:39 PM' ),
        ( '19-05-2015 22:55:05' )
SELECT  CASE WHEN CHARINDEX('-', RegDate) != 0 
             THEN CONVERT(DATETIME, RegDate, 105)
             ELSE CONVERT(DATETIME, RegDate, 101)
        END AS FormattedToDate
FROM    #temp
DROP TABLE #temp

生产:

FormattedToDate
2015-05-22 23:09:39.000
2015-05-19 22:55:05.000

相关内容

  • 没有找到相关文章

最新更新