将 dd/mm/yyyy VARCHAR 转换为 SQL 中的 yyyy-dd-mm DATETIME
Convert dd/mm/yyyy VARCHAR to yyyy-dd-mm DATETIME in SQL
我正在尝试将具有 dd/mm/yyyy
格式 (01/08/2017) 的 varchar(255) 字符串 (dp.Date) 转换为 yyyy-mm-dd format
中的日期时间 (2017-08 -01).
我试过使用 CONVERT(DATETIME, dp.Date, 120)
,但我得到了以下错误消息。
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
我已经使用 CAST+SUBSTRING.
解决了这个问题
cast(substring(dp.Date,7,4)+substring(dp.Date,4,2)+substring(dp.Date,1,2) AS datetime)
您可以尝试使用 PARSENAME
,如下所示。使用示例数据执行:
DECLARE @TestTable TABLE (Id INT, [Date] VARCHAR (255));
INSERT INTO @TestTable (Id, [Date]) VALUES
(1, '01/08/2017'), (2, '21/09/2017'), (3, '15/12/2017');
SELECT CAST(
CONCAT(PARSENAME(DateValue, 1), '-',
PARSENAME(DateValue, 2), '-',
PARSENAME(DateValue, 3))
AS DATETIME) AS [Date]
FROM (
SELECT REPLACE([Date], '/', '.') AS DateValue FROM @TestTable
) D
我正在尝试将具有 dd/mm/yyyy
格式 (01/08/2017) 的 varchar(255) 字符串 (dp.Date) 转换为 yyyy-mm-dd format
中的日期时间 (2017-08 -01).
我试过使用 CONVERT(DATETIME, dp.Date, 120)
,但我得到了以下错误消息。
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
我已经使用 CAST+SUBSTRING.
解决了这个问题cast(substring(dp.Date,7,4)+substring(dp.Date,4,2)+substring(dp.Date,1,2) AS datetime)
您可以尝试使用 PARSENAME
,如下所示。使用示例数据执行:
DECLARE @TestTable TABLE (Id INT, [Date] VARCHAR (255));
INSERT INTO @TestTable (Id, [Date]) VALUES
(1, '01/08/2017'), (2, '21/09/2017'), (3, '15/12/2017');
SELECT CAST(
CONCAT(PARSENAME(DateValue, 1), '-',
PARSENAME(DateValue, 2), '-',
PARSENAME(DateValue, 3))
AS DATETIME) AS [Date]
FROM (
SELECT REPLACE([Date], '/', '.') AS DateValue FROM @TestTable
) D