我试图转换具有dd/mm/yyyy格式的varchar(255)字符串(dp.Date)(01/08/2017) datetime以yyyy-mm-dd格式(2017-08-01)。将dd/mm/yyyy VARCHAR转换为yyyy-dd-mm DATETIME in SQL
我使用CONVERT(DATETIME,dp.Date,120)试过,但我结束与“一个char数据类型到datetime数据类型的转换导致的外的范围日期时间值“。错误消息。
由于提前,
我试图转换具有dd/mm/yyyy格式的varchar(255)字符串(dp.Date)(01/08/2017) datetime以yyyy-mm-dd格式(2017-08-01)。将dd/mm/yyyy VARCHAR转换为yyyy-dd-mm DATETIME in SQL
我使用CONVERT(DATETIME,dp.Date,120)试过,但我结束与“一个char数据类型到datetime数据类型的转换导致的外的范围日期时间值“。错误消息。
由于提前,
我已经成功使用CAST + SUBSTRING来解决它。
投(子(dp.Date,7,4)+子(dp.Date,4,2)+子(dp.Date,1,2)为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
您需要使用'CONVERT'给它一个格式,而不是'CAST':CONVERT(DATETIME,dp.Date,120)' – Lamak
对不起,我的意思是写CONVERT .. 。正如你所看到的,我也使用了CONVERT的语法......编辑了这篇文章......谢谢你的支持! –
然后你的字符串超出了日期的范围(比如'05/15/2017') – Lamak