【问题标题】:Birthdays in SQL... disregard year in a date valueSQL中的生日...忽略日期值中的年份
【发布时间】:2011-12-24 21:33:36
【问题描述】:

我希望我的 winforms 显示该日期的生日,但我不确定如何比较当前日期和日期时间格式。例如,如果我的生日是 1990 年 1 月 1 日,我希望我的数据网格显示 2011 年 1 月 1 日的信息。我不确定如何在 SQL 中解析日期;如果有人可以帮助我,那就太好了!

【问题讨论】:

标签: sql winforms visual-studio-2010 sql-server-2008


【解决方案1】:

与第一种类似的另一种方式。

SELECT * FROM Users WHERE
 DatePart(d, Users.Birthdate) = DatePart(d, GetDate() )
 AND
 DatePart(m, Users.Birthdate ) = DatePart(m, GetDate() )

【讨论】:

    【解决方案2】:

    使用 Jamie F 的示例的不同方法。可能对索引更友好,但您必须尝试一下。

    SELECT
      *
    FROM
      Users
    WHERE
      DATEADD(YEAR, -DATEDIFF(YEAR, 0, Users.Birthdate), Users.Birthdate)
      =
      DATEADD(YEAR, -DATEDIFF(YEAR, 0, GetDate()      ), GetDate()      )
    

    【讨论】:

      【解决方案3】:

      我认为这应该给你一个好主意:

      SELECT
         *
      FROM
         Users
      WHERE
         MONTH( Users.Birthdate ) = MONTH( GetDate() )
         AND
         DAY( Users.Birthdate ) = DAY( GetDate() )
      

      【讨论】:

      • +1。我使用 JulianDate vie datepart(dayofyear...) 得到了一个聪明的答案,但它在闰年崩溃并烧毁。确保您的最终解决方案考虑到这一点!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多