我正在尝试将dd/mm/yyyy
格式(01/08/2017)的varchar(255)字符串(dp.Date)转换为yyyy-mm-dd format
(2017-08-01)中的日期时间。
我已尝试使用CONVERT(DATETIME, dp.Date, 120)
,但我最终收到以下错误消息。
将char数据类型转换为datetime数据类型会导致日期时间值超出范围。
答案 0 :(得分:0)
我设法使用 CAST + SUBSTRING 解决了这个问题。
cast(substring(dp.Date,7,4)+ substring(dp.Date,4,2)+ substring(dp.Date,1,2)AS datetime)
答案 1 :(得分:0)
您可以尝试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