SQL错误日期与INT不兼容



请一些人可以帮助我。我试图在SQL中使用这种Excel条件,但我遇到了错误。

EXCEL Condition = "=DATE(2017,MONTH(EOMONTH(B2,0)+1),DAY(EOMONTH(B2,0)+1))"
SQL Query = DATEFROMPARTS(YEAR(GETDATE()),CONVERT(Varchar,
(MONTH(EOMONTH(hiredate,0)+1)),120),CONVERT(Varchar,
(DAY(EOMONTH(HireDate,0)+1)),120)) as 'DATE'  
ERROR: Msg 206, Level 16, State 2, Line 1
Operand type clash: date is incompatible with int

预先感谢您

在您的查询中使用SQL的Dateadd()函数如下所示,这可能对您有用。

使用

CONVERT(Varchar,MONTH(DATEADD(dd,1,EOMONTH(GETDATE(),0))),120)

而不是

(MONTH(EOMONTH(hiredate,0)+1))

我想您正在尝试获得hiredate之后的一个月的第一天,但我无法确定。

此MySQL表达式使用方便的LAST_DAY()函数生成了该表达式。

      LAST_DAY(hiredate) + INTERVAL 1 DAY

如果您想要hiredate发生的一个月的第一天,请使用此。

      LAST_DAY(hiredate) + INTERVAL 1 DAY - INTERVAL 1 MONTH

如果您正在使用SQL Server(Microsoft产品),此表达式可为您带来hiredate发生的第一天。

   DATEFROMPARTS(YEAR(hiredate), MONTH(hiredate), 1)

这是您下个月的第一天。

   DATEADD(MONTH, 1,DATEFROMPARTS(YEAR(hiredate), MONTH(hiredate), 1))

您可以看到,在SQL Server和MySQL中,它不同。数据库黑客的工作安全。内置的数据处理功能正确地涉及28、29、30和31天和LEAP等内容以及所有这些日历小时,因此您不必这样做。

最新更新