2

ado.net アプリケーションのラベルに誕生日アラートを表示したいと考えています。

どうすればそれを示すことができますか?

特定の日付の誕生日を持つ名前のみを表示したい私のフィールドname、、、および彼のデータ型はid、そのフィールドのフォーマットの値ストアです。DateOfBirthDatetimmm/dd/yyyy

私のプロジェクトにとって非常に重要なのを助けてください

私は1つのクエリを書きましたが、役に立ちません:

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

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 に答える