如何更改日期时间格式?

时间:2015-06-17 10:34:19

标签: sql-server date datetime sql-server-2014

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

转换它
dd/mm/yyyy

但它会出现以下错误:

  

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

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

在转换之前,您需要确定要转换的值的格式。如果它只是在这两种格式之间,您只需搜索-即可确定其格式。

我还建议将值存储在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