Я ищу способ построить критерии для поиска всех полуденных дат в поле datetime2 (включая значения, имеющие значение NULL). Другими словами, временная часть должна быть равна 0,5 или NULL. Вот что я tryied найти количество времени:Преобразование времени части datetime2 в decimal/float
SELECT cast(GetDate() - DateDiff(day, 0, GetDate()) as decimal(4,4));
Это дает мне то, что я хочу, но когда я передать его в качестве критериев следующего кода с ошибкой
«типа Операнда столкновения: datetime2 несовместим с межд ":
SELECT tbl_OrderDetailsSub.OrderDetailsSubID, ProcessedDate
FROM tbl_OrderDetailsSub INNER JOIN tbl_OrderDetailsSubPl
ON tbl_OrderDetailsSub.OrderDetailsSubID = tbl_OrderDetailsSubPl.OrderDetailsSubID
INNER JOIN tbl_OrderDetails ON tbl_OrderDetailsSub.OrderDetailsID = tbl_OrderDetails.OrderDetailsID
INNER JOIN tbl_Order ON tbl_OrderDetails.OrderID = tbl_Order.OrderID
INNER JOIN tbl_Tooling ON tbl_OrderDetailsSubPl.TID = tbl_Tooling.TID LEFT OUTER JOIN tbl_ProdAct ON tbl_OrderDetailsSub.OrderDetailsSubID = tbl_ProdAct.ODSubID
WHERE (((tbl_Order.ProdTypeID)<>'S' Or (tbl_Order.ProdTypeID) Is Null)
AND ((tbl_Order.CancelledDate) Is Null)
AND ((tbl_Order.RefusingReason) Is Null)
AND (cast(isnull(ProcessedDate - DateDiff(day, 0, ProcessedDate),0.5) as decimal(4,4))=0.5)
AND ((tbl_Order.OrderType)<>'Pasiūlymas')
AND ((tbl_Order.ShippedDate) Is Null));
Я чувствую, что это так или иначе связано с IsNull функции, но не может уточнить его. Я также пробовал эту строку
AND (cast(ProcessedDate - DateDiff(day, 0, ProcessedDate) as decimal(4,4))=0.5 OR ProcessedDate is null)
... но получил такую же ошибку.