在sql server中将DDMMYYYY转换为YYYYMMDD日期格式?

时间:2016-08-25 06:45:41

标签: sql-server date

我的格式"26052016"格式为DDMMYYYY 我想将此日期转换为"YYYYMMDD"格式。

任何想法
我试过这个方法

select CONVERT(varchar(8),[doc-date],112) FROM C034_PDK_ParallelBillingSourceExtract

但是这给了我相同的日期。

请帮帮我

6 个答案:

答案 0 :(得分:1)

有不同的方法可以做到这一点。

最好的方法是使用SELECT vsa.displayname NameofLiaisonOfficer, vsa.EmailAddress LOEmail, '(65)' +' '+ convert(varchar, vsa.MainOfficeTelNo ) as LOContactNo, vsa.MainOfficeTelNo GeneralOfficeConatctNo FROM ApplicationProjectLo ap INNER JOIN V_SIP_ALLSTAFF vsa ON ap.StaffEmailId = vsa.LOGINID WHERE ap.Type IN ('L','A') ORDER BY ap.Type desc 方法,因为您知道字符位置将保持不变。

例如

假设您的日期为 - substring

使用31122015方法选择日期部分并将它们连接起来

substring

结果将是 - select SUBSTRING('31122015',5,4) + SUBSTRING('31122015',3,2) + SUBSTRING('31122015',1,2)

答案 1 :(得分:1)

 SELECT CONVERT(VARCHAR(8), doc-date, 112) AS [YYYYMMDD] from
 C034_PDK_ParallelBillingSourceExtract

检查......这应该可以正常工作。

由于

答案 2 :(得分:1)

SELECT CONVERT(VARCHAR(8), '26052016', 112) AS [YYYYMMDD] from
 C034_PDK_ParallelBillingSourceExtract

答案 3 :(得分:1)

试试这个,

SELECT substring([doc-date], 5, 4) + substring([doc-date], 3, 2) + substring([doc-date], 1, 2) AS [YYYYMMDD]
FROM C034_PDK_ParallelBillingSourceExtract

答案 4 :(得分:1)

我可以找到这种方式,我不知道是否存在任何其他方式..

declare @date nvarchar(max)='01052016'

select convert(varchar(8),cast(CONCAT(SUBSTRING(@date,3,2),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,5,4)) as date),112)as [YYYYMMDD]

清除代码:

declare @date nvarchar(max)='01052016'
declare @date1 date
set @date1 =cast(CONCAT(SUBSTRING(@date,3,2),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,5,4)) as date)

select convert(varchar(8),@date1,112)as [YYYYMMDD]

如果您使用Sql version< 2012,则需要跳过CONCAT并使用+进行字符串连接。

答案 5 :(得分:0)

自SQL Server 2016起,我们为此提供了一些便捷的工具:

使用DATEFROMPARTS和SUBSTRING将奇数日期格式从Varchar中的任何排列转换为实际日期:

SELECT DATEFROMPARTS(SUBSTRING('31122015',5,4), SUBSTRING('31122015',3,2), SUBSTRING('31122015',1,2))

使用FORMAT将实际日期转换为YYYYMMDD:

SELECT FORMAT(MyDate, 'yyyyMMdd')

当心yyyyMMdd,这是MS SQL中唯一区分大小写的部分。小写的mm是“分钟”,大写的MM是“月”,大写的YYYY或DD都不是,只会在输出中添加字母!