簡體   English   中英

根據當前日期計數寄存器

[英]Count register depending of current date

我有一張創建日期如下的表格:

SELECT [CreationDate] FROM Store.Order

因此,每個寄存器都有一個日期時間,例如:

 2018-03-14 00:00:00.000
 2017-04-14 00:00:00.000
 2017-06-14 00:00:00.000

我想知道如何僅COUNT等於當前月份和年份的日期寄存器,例如,在這種情況下,如果在03個月中只有一個寄存器,我只能計數1,該如何實現呢? 問候

這是一個選擇:

SELECT COUNT(*)
FROM Store.Order
WHERE
    CONVERT(varchar(7), [CreationDate], 126) = CONVERT(varchar(7), GETDATE(), 126);

演示

我們可以將表中的創建日期和當前日期都轉換為yyyy-mm字符串,然后檢查它們是否相等。

最有效的方法是:

where creationdate >= dateadd(day, 1 - day(getdate(), cast(getdate() as date)) and
      creationdate < dateadd(month, 1, dateadd(day, 1 - day(getdate(), cast(getdate() as date)))

盡管這看起來比其他解決方案更復雜,但是所有復雜性都在getdate() -這意味着優化程序可以在creationdate上使用索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM