2011-04-03 7 views
0

こんにちは私は、Visual Studioでクエリビルダを使用して次のクエリを作成しました。ASP.Net SQL日付が今日の後にある

SELECT Schd_ID, Schd_Date, Schd_Avaliable, Schd_Nights, Schd_Price, Accom_ID 
FROM Schedule 
WHERE (Schd_Avaliable = 'Yes') AND (Accom_ID = Accom_ID) 

私はSchd_Dateが今日の日付より後にある場合、任意のアイデアを追加し、別のWHEREステートメントを追加したいですか?

+0

RDBMSとバージョンは何ですか? 'Schd_Date'とはどんなデータ型ですか? –

答えて

1

これはあなたが現在の日付を返し、それと比較するGETDATE()機能を使用することができますSQL Serverのある場合:

SELECT 
    Schd_ID, Schd_Date, Schd_Avaliable, Schd_Nights, Schd_Price, Accom_ID 
FROM 
    Schedule 
WHERE 
    (Schd_Avaliable = 'Yes') 
AND 
    (Accom_ID = Accom_ID) 
AND 
    (Schd_Date > GETDATE()) 
+0

重複した回答をおかけして申し訳ありません。私が答えを書いていたときに、これを掲示しておかなければなりません。 – tugberk

0
SELECT Schd_ID, Schd_Date, Schd_Avaliable, Schd_Nights, Schd_Price, Accom_ID 
FROM Schedule 
WHERE (Schd_Avaliable = 'Yes') AND (Accom_ID = Accom_ID) AND (GETDATE() < Schd_Date) 

これは

0

を動作するはずです、私はこの表現として使用することができますねyyyy-mm-dd(時、分、秒を除く)形式の現在の日付を表す日付。

WHERE Schd_Date > GETDATE() 

使用するため、以下の:SQL Serverを想定すると

(Datepart('yyyy',getdate())+ '-' +Datepart('m',getdate())+ '-' + Datepart('d',getdate()))

ので

SELECT Schd_ID, Schd_Date, Schd_Avaliable, Schd_Nights, Schd_Price, Accom_ID 
FROM Schedule  
WHERE (Schd_Avaliable = 'Yes') AND (Accom_ID = Accom_ID) AND 
     (Schd_Date >= (Datepart('yyyy',getdate())+ '-' + 
        Datepart('m',getdate())+ '-' + 
        Datepart('d',getdate()))) 
+0

'DATEPART'は' int'を返します。これは 'varchar'より優先度が高く、一つの式で二つの型が混在しています。だからエンジンは整数を自然に解釈しようとしますが、自然に失敗します。結論:各 'DATEPART'の結果を文字列に変換する必要があります。 –

+0

@Andriy:あなたはもちろんです。私はOMG Poniesの答えがより効率的で、より良くなっているので、私はこの答えを削除します(これは、CASTまたはCONVERTコールを正確に追加しなければならないという事実によってさらに強調されます)。 –

4

は、GETDATE()関数は、文がで実行された日付と時刻を返します。真夜中の現在の日付よりも大きい日付を見つける:

CURRENT_TIMESTAMPは、現在の日付と時刻をデータベースで取得する手段です。それを超えて、日付機能はデータベース間で一貫していませんので、より良い回答のためにあなたが対処していることを教えてください。

+0

+1これは私のソリューションで意図したのと同じ結果を生み出す、効率的でクリーンな方法です。 –

関連する問題