合并日期部分以在 SQL 服务器中创建新的日期时间

Combining dateparts to create new datetime in SQL Server

我正在尝试通过组合不同列的日期部分来创建我自己的日期。我的代码如下:

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

我很感激任何想法。谢谢

基本上你是在尝试添加数字,

2014 +- 03 +- 02

您必须先将每个 DATEPART 转换为 VARCHAR 才能连接它。

CAST(DATEPART(YY, FIRST_INSTALL_DATE) AS varchar(10)) 

SQL-服务器 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

我认为您在转换为日期时间时应该使用 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],