簡體   English   中英

從出生日期中選擇月份和年份

[英]select month and year from Date of birth IN sql

我有帶有DOB列的表格('2012-05-29 00:00:00.000')和其他幾個字段,我需要選擇6個月至6年之間的DOB數據。 我嘗試使用下面的SQL,但這不能提供正確的數據。 任何幫助將不勝感激。

select * from dbo.xyz
where ( FLOOR(DATEDIFF(MONTH, birth_date , GETDATE()) % 12) >=6
      AND  FLOOR(DATEDIFF(DAY, birth_date , GETDATE()) / 365.25) <= 6
      )

使用日期時,建議僅對非列值使用函數。 換句話說,修改getdate() ,而不是birth_date

select *
from dbo.xyz
where birth_date between dateadd(year, -6,  getdate()) and dateadd(month, -6, getdate())

這有兩個優點。 首先,它使where子句“可保留”,這意味着可以在比較中使用索引。 更重要的是,使用datediff()的替代方法並不像預期的那樣有效。 datediff()計算兩個值之間的日歷邊界數。 因此,2014-12-31和2015-01-01相隔一天,相隔一個月,甚至相隔一年。

嘗試這個

select * from dbo.xyz
where DATEDIFF(MONTH, birth_date , GETDATE()) between 6 and 72

這是另一種允許對生日進行索引的選項。

select *
from dbo.xyz
where birthdate > DATEADD(YEAR, -6, GETDATE())
    and birthdate < DATEADD(MONTH, -6, GETDATE())

暫無
暫無

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

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