我正在嘗試創建一個用於過濾訂單的存儲過程。基本上用戶可以選擇按日期和日期過濾訂單。所以他們可以通過日期搜索,日期或使用兩者,如果它是有道理的?存儲過程日期從和日期到
反正這是我的SQL Server存儲過程到目前爲止
ALTER PROCEDURE [dbo].[CN_GetOrderItemByCustID]
@CustomerID int,
@OrderItemWRClass varchar(max) = NULL,
@OrderItemSKUName varchar(50) = NULL,
@OrderItemDateFrom Datetime,
@OrderItemDateTo Datetime
AS
BEGIN
SET NOCOUNT ON;
IF DATEDIFF(d, @OrderItemDateFrom, '01/01/1970') = 0
SET @OrderItemDateFrom = null
IF DATEDIFF(d, @OrderItemDateTo, '01/01/1970') = 0
SET @OrderItemDateTo = null
-- Insert statements for procedure here
SELECT
COM_OrderItem.OrderItemID, COM_Order.OrderID,
COM_Order.OrderDate, COM_OrderItem.OrderItemUnitCount,
COM_OrderItem.OrderItemStatus, COM_OrderItem.OrderItemSKUNAME,
COM_OrderItem.OrderItemSKUID
FROM
COM_OrderItem
INNER JOIN
COM_Order ON COM_Order.OrderID = COM_OrderItem.OrderItemOrderID
WHERE
COM_Order.OrderCustomerID = @CustomerID
OR COM_OrderItem.OrderItemWRClass LIKE @OrderItemWRClass + '%'
OR COM_OrderItem.OrderItemSKUName LIKE @OrderItemSKUName + '%'
OR CONVERT(VARCHAR, COM_Order.OrderDate, 120) LIKE @OrderItemDateFrom + '%'
ORDER BY
COM_Order.OrderDate DESC
但是我不知道如何把從(OrderItemDateFrom
)的日期和日期(OrderItemDateTo
)在最後的SQL語句?
我應該使用OR CONVERT(VARCHAR, COM_Order.OrderDate, 120) LIKE @OrderItemDateFrom + '%'
- 這給了我一個錯誤從字符串轉換日期和/或時間時
轉換失敗。
我知道在一個正常的SQL查詢,我會用Between OrderItemDateFrom and OrderItemDateTo
感謝
@Thierry我不知道該鏈接是如何幫助我嗎? – Kevin
道歉,錯誤的線程。將在一秒鐘內刪除它。 – Thierry
@Kevin使用'BETWEEN'進行更清晰的查詢 – Sherlock