【问题标题】:Filter on Age where people having birthday in that month过滤那个月过生日的人的年龄
【发布时间】:2017-07-27 07:17:11
【问题描述】:

我有一个日期参数,我需要使用它来找出我们数据库中有多少人未满 6 岁或与 Parameter 同月满 6 岁。

这是我的开始。 (2017-07-02 日期来自参数)

SELECT a.name,a.firstname,a.birthday FROM adress a 
WHERE a.birthday >= dateadd(year,-6, { d '2017-07-02'})

我的问题是我还需要归还那些在 2011-07 年满 6 岁的人。使用 Select 我有自动取款机,我只能得到那些在 2017 年 7 月 1 日或 2017 年 7 月 2 日在 6 月过生日的人。

我怎样才能很好地做到这一点?

【问题讨论】:

  • 我认为你需要WHERE x >= y OR x=z,其中x 是a.birthday,y 是你现在的dateadd(...),z 是那些在2011-07 年满6 岁的人?
  • 不要使用确切的日期参数,而是使用 LAST_DAY('2017-07-02') 然后获取数据。

标签: sql tsql date


【解决方案1】:

解决了,谢谢

SELECT a.name,a.firstname,a.birthday FROM adress a 
WHERE a.birthday >= dateadd(year,-6, EOMONTH({ d '2017-07-02'}))

【讨论】:

    【解决方案2】:

    试试这个:

     SELECT a.NAME, 
            a.firstname, 
            a.birthday 
     FROM   adress a 
     WHERE  Datename(mm, birthday) = Datename(mm, Getdate()) 
            AND Datename(yy, birthday) < Datename(yy, Getdate()) 
            AND Datename(dd, birthday) >= Datename(dd, Getdate()) 
    

    【讨论】:

      猜你喜欢
      • 2010-10-01
      • 2021-12-07
      • 1970-01-01
      • 2013-03-08
      • 2019-07-27
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多