我有一張表格,它定義了僅使用月和日的幾個非重疊日期。它基本上是庫存物品的「庫存」表格,允許您在季節性業務中存儲一年中的不同金額。以下是一個單個項目庫存表的外觀示例。請注意,我有一個項目表,我沒有在這裏顯示。在此表中,ItemID是一個外鍵,StockID是主鍵。檢查日期是否在期間內未確定年份
StockID ItemID BeginDate EndDate QtyTrigger ReorderQty
1 1 11/1 1/31 0 1
2 1 2/1 5/31 1 2
3 1 6/1 10/31 1 1
所以我們說,我想2013年1月15日,獲得重排序查詢/報表的日期從我目前的邏輯我的查詢將返回不正確的,因爲它是這樣的:
SELECT i.*, st.QtyTrigger, st.ReorderQty
FROM t20Itm AS i INNER JOIN t20Itm_Stock AS st ON i.ItemID = st.ItemID
WHERE #01/14/2013# >= CDate(st.BeginDate & "/2013") AND
#01/14/2013# <= CDate(st.EndDate & "/2013")
AND i.QtyOnHand <= st.QtyTrigger
問題是本例中11/1的BeginDate需要是2012年11月1日。在我的示例中,我展示了2013年,因爲這是我能夠用來生成此查詢的唯一邏輯。
這裏我懷疑我的問題可能是一個更大的設計缺陷,所以我在尋找如何做到這一點,否則一個更好的主意一個答案,也許有一些原因,這個設計是一個壞主意。
我知道我可以通過不允許日期跨度橫跨12月31日去做到這一點。但是,這個應用程序的很多用戶都有一個從11月到2月的時間段,這是他們最慢的幾個月。他們最終會創建兩個不同的日期範圍,其中包含相同的數據,一個用於11月/ 12月,另一個用於1月/ 2月。
我正在使用SQL Server作爲前端應用程序的數據庫和MS Access。我可以使用T-SQL或Access VBA,因此您的解決方案可以位於任一個中。
'我建議你把你的日期存儲爲兩個單獨的列'你能澄清一下嗎?你是否建議他們是日期欄?我想知道是否可以更好地將我的股票日期存儲爲DayOfYearNumber。然後,我所要做的就是獲取CurrentDayOfYearNumber,並找出它適合哪個範圍。這樣做肯定會更快,並且可以使用索引,不是嗎? – HK1
我的想法是介紹月和日,這樣更容易維護系統。但是你的想法應該是更好的表現。然後,您可以應用類似的where子句。 – OzrenTkalcecKrznaric