2013-04-16 15 views
16

私は日付比較のためのSQLステートメントで明日の日付を取得しようとしていますが、それは動作していません。明日の日付を取得

以下

は私のコードです:

select * 
from tblcalendarentries 
where convert(varchar,tblcalendarentries.[Start Time],101) 
     = convert(varchar, GETDATE() +1, 101) 
+0

エラーメッセージは何ですか? –

答えて

28

明日はあなたが現在のシステム日付に1日追加されます以下のコードを使用することができます日付を取得するには:

SELECT DATEADD(day, 1, GETDATE()) 

GETDATE()

現在のデータベースシステムのタイムスタンプを、データベースのタイムゾーンオフセットなしでdatetime値として返します。この値は、SQL Serverのインスタンスが実行されているコンピュータのオペレーティングシステムから取得されます。

DATEADD(datepart , number , date)

指定された数の間隔(符号付き整数)と指定された日付がその日付の指定された日付要素に加え返します。

のでWHERE句であなたのコードにこれを追加する:

WHERE CONVERT(VARCHAR, tblcalendarentries.[Start Time], 101) = 
     CONVERT(VARCHAR, DATEADD(DAY, 1, GETDATE()), 101); 

まずオフ、GETDATE()は、次の形式であなたに今日の日付を取得します:

2013-04-16 10:10:02.047 

その後DATEADD()を使用して、ことができます指定した日付から日付または時間間隔を追加(または必要な場合は減算)します。間隔は、年、月、日、時、分などです。

タイムゾーンの操作?

あなたはタイムゾーンを横断するシステムを使用している場合は、あなたもGETUTCDATE()を使用して検討する必要があります。

GETUTCDATE()

は、datetime値として現在のデータベース・システムのタイムスタンプを返します。データベースのタイムゾーンオフセットは含まれていません。この値は、現在のUTC時間(協定世界時)を表します。この値は、SQL Serverのインスタンスが実行されているコンピュータのオペレーティングシステムから取得されます。

-2

あなたが日付に追加すると、翌日の日付が与えられると思います。

DATE+1 

これで問題はありません。申し訳ありませんが、私は、コードに

2

を提供するために、ここでのコードのSQL Serverへのアクセス権を持っていないconvert()

where convert(varchar(11),tblcalendarentries.[Start Time],101) = convert(varchar(11), GETDATE() +1, 101) 
4

varcharのサイズを指定下記をお試しください:

SELECT GETDATE() + 1 

これは、現在の日付に1日を追加し

0

書いてください:

where 
    DATEADD(day,DATEDIFF(day,0,tblcalendarentries.[Start Time]),0) = 
    DATEADD(day,DATEDIFF(day,0,GETDATE()),1) 

これにより、日付を文字列に完全に変換するのを回避し、両方の値から時間部分を削除します。

関連する問題