Declare
   @date1 date = '2015-12-01'
   ,@date2 date = '2015-12-30'

BEGIN

Declare @date_u char = Month(@date1)
        ,@date_v char = Month(@date2)

Select
       STD.StoreNo As StoreNo
       ,CheckDate as Date
       ,ProductBarCode as ProductBarCode
       ,SUM( StocktakingQty)AS ProducQty
       From StockTakingDetail STD
Inner Join
(Select StoreNo,CheckNo,CheckDate
              From StockTakingMain SM )StocktakingMain
   On STD.CheckNo =StockTakingMain.CheckNo
   where year(CheckDate) between @date_u and @date_v
    group By STD.StoreNo,STD.ProductBarCode,CheckDate
             End


实际上,我想显示每日库存,但只显示每月一次。

他们用来在仓库中盘点。没有数据,我无法填补日期空白。因此,我计划仅使用月份和年份来获取数据。但是,我无法找到一种方法,仅从日期和月份开始采用输入参数。

有人可以帮忙吗?

最佳答案

您是否希望您的where子句看起来像这样?

where year(CheckDate) * 100 + month(CheckDate) between year(@date1) * 100 + month(@date1) and
                                                       year(@date2) * 100 + month(@date2)


如果是这样,我真的会去:

where CheckDate >= date_sub(@date1, interval 1 - day(@date1)) and
      CheckDate < date_add(date_sub(@date2, interval 1 - day(@date2)), interval 1 month)

10-08 02:41