0

我有几列要转换为一列,但我在这里遇到了一些问题。

问题是月份或日期可能是个位数,而我一直在丢失0

在进行转换之前,我首先在视图上尝试它,但甚至无法让三列给出这样的字符串20090517

有任何想法吗?CAST并且RIGHT似乎没有为我做这件事。

4

3 回答 3

2

您可以使用 DATEADD

DECLARE @YEAR int
DECLARE @MONTH int
DECLARE @DAY int

SET @YEAR = 2013
SET @MONTH = 5
SET @DAY = 20


SELECT CONVERT(DATE,
 DATEADD(yy, @YEAR -1900, DATEADD(mm, @MONTH -1 ,DATEADD(dd, @DAY -1, 0))))

结果是 2013-05-20

您可以将 SELECT 命令中的变量替换为表中的变量。

于 2013-05-20T22:24:55.770 回答
1

或者

DECLARE @YEAR int
DECLARE @MONTH int
DECLARE @DAY int

SET @YEAR = 2013
SET @MONTH = 5
SET @DAY = 20

SELECT RIGHT('0000'+ CONVERT(VARCHAR,@Year),4) + RIGHT('00'+ CONVERT(VARCHAR,@Month),2) + RIGHT('00'+ CONVERT(VARCHAR,@Day),2)

20130520
于 2013-05-20T22:32:29.803 回答
0

我最终使用

dateadd(month,(@YEAR-1900)* 12 + @MONTH - 1,0) + (@DAY-1)

于 2018-10-15T18:50:57.333 回答