2017-05-07 4 views
2

におけるOracleのTRUNC(SYSDATE)と同様の機能があります:私は次のようにクエリを実行できるOracleでのMySQL

Select * from Orders where trunc(createdDate) = trunc(sysdate) 

は、私は今日作成したすべての注文を取得します。

MySqlで同じことを行う方法は?

これまでのところ、currentdate()= '07 -05-2017 'のようにしか見つかりません。日付をハードコードしたくありません。

は、ありがとう

Dapidチャンドラ

答えて

2

date()関数任意の日時値の日付部分が返さないとcurdate()関数は、現在の日付を返し、その結果を切り捨てるので、不要:

... date(createdDate)=curdate() 
+0

ありがとう、影! –

0

はい、あなたは(現在の日付を取得するにはNOW()機能と一緒に)MySQLのDATE()機能を使用することができます。 Here's

日付または日時の式exprの日付部分を抽出します。

あなたのクエリは次のようになります。

Select * 
FROM Orders 
WHERE DATE(createdDate) = DATE(NOW()) 

更新@Rahulによって示唆されるように、それはタイムスタンプなしの日付を返すよう

、我々はCURDATE()DATE(NOW())を置き換えることができ、例えば:

Select * 
FROM Orders 
WHERE DATE(createdDate) = CURDATE() 
+0

だと思うが、ダルシャンをありがとう! –

+0

@Downvoterは説明してくれませんか? –

+0

私はdownvotedしませんでしたが、 'DATE(NOW()) 'を呼び出すことは効率的に' curdate() 'に置き換えることができるのでここでは役に立たないと考えています – Rahul

0

私は少し速く

Select * 
FROM Orders 
WHERE createdDate >= curdate(); 
+0

これがなぜより速くなるのか詳しく教えてもらえますか?ありがとう、フラン。 –

+0

私は1つの関数を2または3ではなく1つだけ呼び出すためだと思います。 –

+1

列の関数を使用しないと、クエリオプティマイザはその列のインデックスにアクセスでき、パフォーマンスが向上します。その列に関数を使用すると、その利点を失います。 「sargable」という用語を研究する。 –

関連する問題