【问题标题】:how to show birthday reminder in label in ado.net如何在ado.net的标签中显示生日提醒
【发布时间】:2013-04-14 06:31:26
【问题描述】:

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

我怎样才能证明这一点?

我只想在我的字段nameidDateOfBirth 和他的数据类型为Datetime 值以mm/dd/yyyy 格式存储在该字段中的值。

p>

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

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

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!!";

【问题讨论】:

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


    【解决方案1】:

    您需要比较两个日期值并忽略它们的时间值。 为此,您可以将它们转换为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())
    

    【讨论】:

    • ericosg 先生,它给我的 'CURDATE' 不是公认的内置函数名称。错误
    • ericogs 先生,我写了这个查询 SELECT PationName, ContactNo FROM Physio_cureTable WHERE CAST(DateOfBirth as Date) =getdate() 但它给我的 Type Date 不是定义的系统类型。错误
    • ericogs 先生,我写了这个查询 SELECT PationName, ContactNo FROM Physio_cureTable WHERE CAST(DateOfBirth AS DATE) = CONVERT(VARCHAR(10),GETDATE(),111) 但它仍然给我类型日期不是定义的系统类型。错误
    • 您使用的是什么 SQL 服务器?
    • 非常感谢,非常感谢 ericosg 先生查询工作出色,感谢您的帮助
    【解决方案2】:

    假设生日 - '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)))             
    

    【讨论】:

    • alexander sir it give me Msg 243, Level 16, State 1, Line 1 类型日期不是定义的系统类型。消息 243,级别 16,状态 1,行 1 类型日期不是定义的系统类型。错误
    • 先生,我试试你的代码,但它给我空白数据,我输入生日日期然后也
    • SQL 2008 支持 DATE 作为类型,但 SQL 2005 (op sql) 不支持。
    • @ericosg 感谢您的澄清。在回答中,我为两个版本中的一个添加了脚本。在你的回答中+1;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多