如何在ado.net中的标签中显示生日提醒

时间:2013-04-14 06:31:26

标签: sql sql-server sql-server-2005 ado.net

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

如何展示?

我想只显示其中包含生日的姓名,特别是我的字段nameidDateOfBirth和他的数据类型是Datetim该字段中的值存储以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!!";

2 个答案:

答案 0 :(得分: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())

答案 1 :(得分: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)))