我试图通过组合不同列的日期部分来创建我自己的日期。我的代码如下:
CAST((datepart(yy,[FIRST_INSTALL_DATE])
+ '-'
+ datepart(mm,[INSTALL_DATE])
+ '-'
+ datepart(dd,[INSTALL_DATE])) as Datetime) AS [Install_Date],
(FIRST_INSTALL_DATE的值是2014-01-01,而INSTALL_DATE的值是1900-08-07。)
但是,我得到的输出应该是 2014-08-07 00:00:00.000
1905-08-07 00:00:00.000
我很感激。感谢。
答案 0 :(得分:3)
基本上你是在尝试添加数字,
2014 +- 03 +- 02
您必须先将每个DATEPART转换为VARCHAR才能连接它。
CAST(DATEPART(YY, FIRST_INSTALL_DATE) AS varchar(10))
SQL-Server 2012
DECLARE @FIRST_INSTALL_DATE datetime = '2016/01/01 00:00:00'; DECLARE @INSTALL_DATE datetime = '2017/02/03 00:00:00'; SELECT DATEFROMPARTS (datepart(yyyy, @FIRST_INSTALL_DATE), datepart(MM,@INSTALL_DATE), datepart(dd,@INSTALL_DATE)) AS InstallDate; GO
| InstallDate | | :------------------ | | 03/02/2016 00:00:00 |
dbfiddle here
答案 1 :(得分:0)
我认为转换为Datetime时应使用ISO 8601 YYYYMMDD格式
SELECT
CAST(
CAST(datepart(yy,[FIRST_INSTALL_DATE]) AS VARCHAR(4)) +
RIGHT('0' + CAST(datepart(mm,[INSTALL_DATE]) AS VARCHAR(2)), 2) +
RIGHT('0' + CAST(datepart(dd,[INSTALL_DATE]) AS VARCHAR(2)), 2)
AS DATETIME) AS [Install_Date],