我在服务器中有一个表,它以下列格式输出日期YEARMONTHDAY
示例20140410
。
问题是如何将其转换为MONTH/DAY/YEAR
,例如04/10/2014
谢谢!
大卫
答案 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
;