Sql server Msg 402,16级,状态1,第300行数据类型date和int在模运算符中不兼容

Sql server Msg 402,16级,状态1,第300行数据类型date和int在模运算符中不兼容,sql-server,Sql Server,运行此查询时出现错误: Msg 402,16级,状态1,第300行 数据类型date和int在模运算符中不兼容 我不知道你们想在这里做什么,但你们不能把一个日期除以2,或者你们能告诉我2019年3月27日除以2应该是什么吗 我只是在这里猜测,但如果您想检查作为数字的日期是否为偶数天,则需要对日期应用DAY函数进行检查: SELECT st.SupplyID, FORMAT(SupplyTrDate, 'MMM dd, yyyy') AS 'Supply Date',

运行此查询时出现错误:

Msg 402,16级,状态1,第300行 数据类型date和int在模运算符中不兼容


我不知道你们想在这里做什么,但你们不能把一个日期除以2,或者你们能告诉我2019年3月27日除以2应该是什么吗

我只是在这里猜测,但如果您想检查作为数字的日期是否为偶数天,则需要对日期应用DAY函数进行检查:

SELECT 
    st.SupplyID, 
    FORMAT(SupplyTrDate, 'MMM dd, yyyy') AS 'Supply Date',
    COUNT(SDQuantity) AS 'Total Item Purchased', 
    SUM(itemsSupply_price) AS 'Total Expense'
FROM
    SupplyTransaction st
JOIN
    SupplyTransDetail std ON st.SupplyID = std.SupplyID
JOIN 
    items i ON std.itemsID = i.itemsID
WHERE 
    SupplyTrDate % 2 = 0 
    AND itemsName LIKE '%A%' OR itemsName LIKE '%a%'
GROUP BY 
    st.SupplyID, st.SupplyTrDate, SDQuantity, itemsSupply_price, SDQuantity
HAVING 
    SupplyTrDate IS NOT NULL;

另外:由于您没有使用聚合列,因此条件SupplyTrDate not NULL实际上应该是WHERE子句的一部分-而不是HAVING

欢迎使用StackOverflow,事实上,不要只在此处转储查询和错误消息,并期望有人提供帮助。MySQL或SQL Server以及您希望通过SupplyTrDate%2=0实现什么?另外,请仅标记您正在使用的RDBMS,MySQL或SQL Server,而不是两者。
WHERE 
    DAY(SupplyTrDate) % 2 = 0