2

我想在我的 ado.net 应用程序中的标签中显示生日提醒。

我怎么能证明这一点?

我只想显示在我的字段中具有特定生日的姓名,name, idDateOfBirth并且他的数据类型是Datetime 值存储在该字段中的mm/dd/yyyy格式 。

请帮助我,这对我的项目非常重要

我写了一个查询,但它没有用:

select PationName,ContactNo
from Physio_cureTable 
where DateOfBirth between getdate()-1 
                      and getdate()

iam 在我的 ado.net 应用程序中写了下面的代码,但它给了我空白数据,我检查输入今天的日期和月份,然后也显示空白数据

 string result = "SELECT PationName FROM Physio_cureTable WHERE CAST(DateOfBirth AS DATETIME)=CAST(GETDATE() AS DATETIME)";
            SqlCommand showresult = new SqlCommand(result, con);

            con.Open();
            string actresult  =(string) showresult.ExecuteScalar();
            con.Close();

            if (!string.IsNullOrEmpty(actresult))
                label18.Text ="Happy Birthday"+actresult+"!";
            else
                label18.Text = "There is No Birthday!!";
4

2 回答 2

2

您需要比较两个日期值并忽略它们的时间值。为此,您可以将它们投射到DATE然后比较它们;

即(MS SQL 2008)

SELECT PationName, ContactNo FROM Physio_cureTable 
WHERE CAST(DateOfBirth AS DATE) = CAST(GETDATE() AS DATE)

GETDATE() 返回今天的日期(有时间,所以你也需要转换它)。

即(MS SQL 2005)

SELECT PationName, ContactNo FROM Physio_cureTable 
WHERE DateOfBirth >= DATEADD(day, 0, GETDATE())
AND DateOfBirth < DATEADD(day, 1, GETDATE())

请注意,这会比较日期,如果实际上您想比较没有年份的日期,您将使用不同的方法:

SELECT PationName, ContactNo FROM Physio_cureTable
WHERE  datepart(d, DateOfBirth) = datepart(d, getdate()) AND
datepart(m, DateOfBirth) = datepart(m, getdate())
于 2013-04-14T06:36:42.827 回答
0

假设生日 - '20100414 01:01:01',因此条件'2013-04-14' - '2013-04-15' 的时间段对您来说是必要的

对于 SQLServer2008+

SELECT PationName,ContactNo      
FROM Physio_cureTable
WHERE DateOfBirth >= DATEADD(YEAR, DATEDIFF(YEAR, GETDATE(), DateOfBirth), CAST(GETDATE() AS date))
      AND DateOfBirth < DATEADD(YEAR, DATEDIFF(YEAR, GETDATE(), DateOfBirth), CAST(DATEADD(day , 1, GETDATE()) AS date))  

SQLFiddle上的演示

对于 SQLServer2005

SELECT PationName,ContactNo      
FROM Physio_cureTable
WHERE DateOfBirth >= DATEADD(YEAR, DATEDIFF(YEAR, GETDATE(), DateOfBirth), CAST(datediff(d,0,GETDATE()) AS datetime))
      AND DateOfBirth < DATEADD(YEAR, DATEDIFF(YEAR, GETDATE(), DateOfBirth), DATEADD(day , 1, CAST(datediff(d,0,GETDATE()) AS datetime)))             
于 2013-04-14T09:52:34.600 回答