如何查看日期是否在当前月份SQL Server中?

时间:2015-04-27 14:38:15

标签: sql sql-server date

我的Ticket_Date列格式为YYYY-MM-DD HH:MI:SS

我想检查Ticket_date是否在当月。

到目前为止,我有:

 Ticket_date >= '2015-04-01' and Ticket_date < '2015-04-30'

但是我需要它来处理当前月而不是硬编码

4 个答案:

答案 0 :(得分:7)

 YEAR(Ticket_date) = YEAR(getdate()) and 
MONTH(Ticket_date) = MONTH(getdate())

但我也会在变量中保存当前日期,以保证在午夜执行长查询时getdate()的结果不会改变

declare @today datetime = getdate()
...
 YEAR(Ticket_date) = YEAR(@today) and 
MONTH(Ticket_date) = MONTH(@today)

答案 1 :(得分:5)

MONTH(Ticket_date) = MONTH(GETDATE()) AND YEAR(Ticket_date) = YEAR(GETDATE())

答案 2 :(得分:3)

这个怎么样?

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

此公式在ticket_date上没有任何功能,因此SQL Server可以在列上使用索引(如果适用)。

答案 3 :(得分:0)

(Server 2008 R2 +)怎么样

-- first day of current month
Ticket_date  >= DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)
-- last day of current month 
and Ticket_date <= DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)) 

更多示例在这里 How can I select the first day of a month in SQL?

  • 您为什么在=中省略Ticket_date < '2015-04-30'