C# 选择下一个月的生日

C# 选择下一个月的生日,c#,sql,sql-server,sql-server-2005,C#,Sql,Sql Server,Sql Server 2005,我想显示下个月的生日列表 生日存储在生日列中。如何显示此内容?请尝试以下内容: SELECT BirthDay FROM TableName WHERE DATEPART(m, BirthDay) = UpcomingMonth 在此SQL查询中使用UpcomingMonth作为参数。希望这有帮助 Select birthdaycolumn from yourtable where MONTH(birthdaycolumn) = MONTH(GETDATE()) 试试这个会有用的试试这

我想显示下个月的生日列表


生日存储在
生日
列中。如何显示此内容?

请尝试以下内容:

SELECT BirthDay 
FROM TableName
WHERE DATEPART(m, BirthDay) = UpcomingMonth 
在此SQL查询中使用UpcomingMonth作为参数。希望这有帮助

Select birthdaycolumn from yourtable where MONTH(birthdaycolumn) = MONTH(GETDATE()) 
试试这个会有用的试试这个

Select * 
from yourDataTable
where MONTH(birthdaycolumn) = (MONTH(GETDATE() + 1)) 

我的首选解决方案是有一个额外的列,您可以索引<代码>下一个生日

作为一个隔夜的过程,您需要更新该列,以确保该值始终在将来

这允许进行如下查询:

SELECT
  myfriends.*
FROM
  user               AS myself
INNER JOIN
  user               AS myfriends
    ON  myfriends.next_birthday >=                   myself.next_birthday
    AND myfriends.next_birthday <  DATEADD(MONTH, 1, myself.next_birthday)

所有这些在范围上也是非常狭窄的。它为一个非常特殊的需求引入了一个新的列和一个新的维护工作。然后应该提出这个问题;这些成本比其他查询(通常需要扫描表等)更高吗?

解决了这个问题

select * from Employee

where convert(nvarchar,convert(datetime,convert(nvarchar,YEAR(GETDATE()))+'.'+convert(nvarchar,MONTH(Birthday))+'.'+convert(nvarchar,DAY(Birthday))),102) between convert(nvarchar,getdate(),102) and convert(nvarchar,DATEADD(D,14 ,GETDATE()),102)

您需要使用生日值和当前年份的
日和
月创建一个新的日期时间。向我们展示您的表结构和一些示例数据!你能说得更具体一点吗。你用什么栏目。字段的类型。也许到时候我能帮上忙。取当前月份、年份,并与列的月份、年份进行比较。如果你试过某样东西后有问题就回来。提示:查看GETDATE、MONTH和YEAR,或者DATEADDItzik Ben Gan在内部SQL Server系列中介绍了这一点。如果OP真的希望在一个月内,即介于
GETDATE()
DATEADD(month,1,GETDATE())
?介于getddate()和month(GETDATE+1())@Zoya之间-如果基准日期是
2012-12-15
?您将如何仅显示12月下旬的生日以及1月上半月的生日?参数的前缀为@SYMBOL如果OP想要下个月,包括从月中开始,该怎么办?例如,如果基准日期为2012-12-15,您将如何显示12月下旬的生日加上1月上半月的生日?
1。
如果OP希望
下个月
包括从月中开始怎么办?例如,如果基准日期为
2012-12-15
,您将如何仅显示12月下旬的生日以及1月上半月的生日<代码>2)。
即使您仅在日历月执行此操作,将1添加到
GETDATE()
也不会有多大作用。感谢您的支持。我想选择即将到来的生日,然后按月在gridControl中显示结果。所以我需要分开一个月@Dems@mbbp-您可能希望在即将到来的
案例中测试已接受的答案,处理从12月(12日)到1月(1日)的翻转。
select * from Employee

where convert(nvarchar,convert(datetime,convert(nvarchar,YEAR(GETDATE()))+'.'+convert(nvarchar,MONTH(Birthday))+'.'+convert(nvarchar,DAY(Birthday))),102) between convert(nvarchar,getdate(),102) and convert(nvarchar,DATEADD(D,14 ,GETDATE()),102)