如何更改日期时间格式?
How to change date-time format?
我的 table 中有一个 RegDate
列 nvarchar(max)
类型,其中日期存储在 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
但出现以下错误:
The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.
请帮我解决这个问题。
您需要先确定要转换的值的格式,然后才能进行转换。如果只是介于这两种格式之间,您只需搜索 -
即可确定其格式。
我还建议将值存储在 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
我的 table 中有一个 RegDate
列 nvarchar(max)
类型,其中日期存储在 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
但出现以下错误:
The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.
请帮我解决这个问题。
您需要先确定要转换的值的格式,然后才能进行转换。如果只是介于这两种格式之间,您只需搜索 -
即可确定其格式。
我还建议将值存储在 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