SQL Server - 转换日期" 20140410"格式为04/10/2014格式

时间:2014-04-10 14:45:16

标签: sql sql-server

我在服务器中有一个表,它以下列格式输出日期YEARMONTHDAY

示例20140410

问题是如何将其转换为MONTH/DAY/YEAR,例如04/10/2014

谢谢!

大卫

4 个答案:

答案 0 :(得分:1)

试试这个:

declare @theDate varchar(8)
set @theDate = '20140410'

select convert(varchar(10),cast(@theDate as date),101)

答案 1 :(得分:0)

我认为你可以使用:

SELECT convert(varchar, getdate(), 101);

答案 2 :(得分:0)

这是一种方法:

declare @dt CHAR(8) = '20140131'
select @dt, CONVERT(DATE,@dt) as newDt 

以下是CONVERT函数http://msdn.microsoft.com/en-us/library/ms187928.aspx上的链接和一个日期类型http://msdn.microsoft.com/en-us/library/bb630352.aspx

答案 3 :(得分:0)

以下是2个不同的版本,如果所有值都是有效的YYYYMMDD格式,则有一个版本,还有一个版本仍然可以使用无效日期(但对于无效日期将返回null)。

DECLARE @tblTest TABLE (id int not null identity, myDate int not null)

INSERT INTO @tblTest(myDate)
VALUES(20140308),(20140410)
;
--QUERY 1: if all values in your table are valid dates, then you can use this
SELECT t.id, t.myDate
    , myDateFormatted = CONVERT(varchar(10),CONVERT(DATE, CONVERT(VARCHAR(10),t.myDate)),101)
FROM @tblTest t

--NOW INSERT SOME INVALID DATES AS WELL
INSERT INTO @tblTest(myDate)
VALUES(20140132),(48)
;

--NOW IF THERE ARE INVALID DATE, THEN USING QUERY 1 WOULD CAUSE AN ERROR: Conversion failed when converting date and/or time from character string
--QUERY 2: if there are ANY invalid values in your table, then you can use this
SELECT t.id, t.myDate
    , myDateFormatted = 
        CASE
            WHEN ISDATE(t.mydate) = 1 and len(t.myDate) = 8
            THEN CONVERT(varchar(10),CONVERT(DATE, CONVERT(VARCHAR(10),t.myDate)),101)
            ELSE NULL --THIS IS AN INVALID DATE
        END
FROM @tblTest t
;