9

以下の属性を持つデータベースとテーブルがあります。

Column: Date 
Type: TIMESTAMP 
Attributes: ON UPDATE CURRENT_TIMESTAMP 
Default: CURRENT_TIMESTAMP

したがって、各データは次の形式で表示されます: "2013-07-06 14:32:18"

「2013-07-06」の行を取得することを示す SQL クエリを探しています。

私が試したこと:

select * from posts where date between "2013-07-05 00:00:00" and "2013-07-07 00:00:00";
4

4 に答える 4

9

MySQL のDATE()関数を使用して、日付部分のみを取得できますTIMESTAMP

SELECT * FROM posts WHERE DATE(date) = '2013-07-06'

dateただし、そのようなクエリは、列のインデックス (存在する場合) の恩恵を受けることはできません。代わりに、次のように範囲を使用できます。

SELECT * FROM posts WHERE date >= '2013-07-06' AND date < '2013-07-07'

MySQL は00:00:00日付リテラルに時刻を暗黙的に追加しますが、必要に応じて明示的に含めることができます。

BETWEEN ... AND ...にはそのオペランドBETWEEN "2013-07-05 00:00:00" AND "2013-07-07 00:00:00"が含まれているため、 on のすべてのレコードだけでなく、on2013-07-05のすべてのレコードも含まれることに注意してください。2013-07-0600:00:002013-07-07

于 2013-07-13T09:03:44.087 に答える
0
select * from posts where date(date) = "2013-07-06";
于 2013-07-13T08:40:25.293 に答える
-1

次のクエリを使用

select * from posts where date >= "2013-07-06 00:00:00" and date < "2013-07-07 00:00:00";
于 2013-07-13T08:46:45.497 に答える