有人能帮助我吗?我试图在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
提前感谢
答案 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))