SQL中的生日。。。忽略日期值中的年份
我希望我的winforms显示该日期的生日,但是我不确定如何比较当前日期和日期时间格式。例如,如果我的生日是1990年1月1日,我希望我的datagrid在2011年1月1日显示我的信息。我不知道如何在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 )
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有一个聪明的答案。。。但它在闰年期间崩塌燃烧。确保您的最终解决方案考虑到这一点!请参阅-请参阅-