2017-08-20 7 views
4

私はここに現在の日付を使用してデータベースからレコードを取得しようとしていますが、私はテーブルからレコードが取得していないBUしようとしたクエリです:今日(現在)の日付でデータを表示するSQLクエリですか?

SELECT * 
FROM Transactions 
WHERE transaction_date = GETDATE(); 
+0

ただの日付ではなく時間的なものでもあります。私は日付+時間に正確な取引があるとは思わない。日時ではなく日付部分だけを比較してみてください –

+0

このクエリを変更するにはどうすればよいですか? –

答えて

2

だけで比較します日付部分

Select *from Transactions 
     WHERE 
    CONVERT(char(10), transaction_date ,126)=CONVERT(char(10), getdate(),126); 
+3

** DATETIMEを** DATEに変換するのは*文字列に変換するのではなく、 **最も適切な**データ型 - それは簡単で働きやすいので、すべてを文字列に変換するだけではありません。 –

1

ストアクエリ内の変数に日付とCONCATそれを

は以下を参照:

var currentDate = DateTime.Now.ToString("yyyy-MM-dd"); 
query = "select * from table where Date = " + currentDate; 
+0

"yyy-MM-dd"の近くに構文エラーが表示されます –

2
あなたは0時までの時間をリセットする/削除することができ

、これは今日のために比較を行うことができます。

select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) 

あなたは、今日の日付の開始と変数を定義し、このように終了することができます:

declare @TodayStart datetime = getdate() 
declare @TodayEnd datetime = getdate() 

set @TodayStart = DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) -- example: 2017-08-20 00:00:00.000 
set @TodayEnd = DATEADD(ss, -1, DATEADD(dd, 1, @TodayStart)) -- example: 2017-08-20 23:59:59.000 

だから、今日の日付の範囲内のすべての取引を得るためにあなたのクエリになるでしょう:

Select *from Transactions 
    WHERE transaction_date between @TodayStart AND @TodayEnd 
関連する問題