SQL中的生日。。。忽略日期值中的年份

SQL中的生日。。。忽略日期值中的年份,sql,winforms,visual-studio-2010,sql-server-2008,Sql,Winforms,Visual Studio 2010,Sql Server 2008,我希望我的winforms显示该日期的生日,但是我不确定如何比较当前日期和日期时间格式。例如,如果我的生日是1990年1月1日,我希望我的datagrid在2011年1月1日显示我的信息。我不知道如何在SQL中解析日期;如果有人能帮我,那就太好了 我想这会给你一个好主意: SELECT * FROM Users WHERE MONTH( Users.Birthdate ) = MONTH( GetDate() ) AND DAY( Users.Birthdate )

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

我想这会给你一个好主意:

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

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

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

使用Jamie F的例子的不同方法。可能对索引更友好,您必须试试看

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

使用Jamie F的例子的不同方法。可能对索引更友好,您必须试试看

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

另一种方式类似于第一种方式

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

另一种方式类似于第一种方式

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

+1.我用JulianDate vie Date of Year Partday得到了一个聪明的答案。。。但它在闰年期间崩塌燃烧。确保您的最终解决方案考虑到这一点+1.我用JulianDate vie DateofYear有一个聪明的答案。。。但它在闰年期间崩塌燃烧。确保您的最终解决方案考虑到这一点!请参阅-请参阅-