我想在标签中的ado.net应用程序中显示生日提醒。
如何展示?
我想只显示其中包含生日的姓名,特别是我的字段name
,id
,DateOfBirth
和他的数据类型是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!!";
答案 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)))