SQL错误日期与int不兼容

时间:2017-11-28 17:35:22

标签: mysql excel

有人能帮助我吗?我试图在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

提前感谢

2 个答案:

答案 0 :(得分:0)

我猜你是想在hiredate之后的第一天,但​​我无法确定。

这个MySQL表达式使用handy-dandy LAST_DAY() function生成它。

      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个月,闰年以及所有日历细节等内容,因此您无需这样做。

答案 1 :(得分:0)

在您的查询中使用SQL的DATEADD()函数,如下所示,这可能适合您。

使用

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

而不是

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