3

「s_timestamp」という列があります。

タイムスタンプに当日が含まれるすべてのレコードを返すにはどうすればよいですか?

例えば、

s_timestamp
2012-12-27 1:00:00
2012-12-27 2:00:00
2012-12-26 0:00:01
2012-12-20 0:00:02
2012-12-21 0:00:03

次の出力が欲しいです:

2012-12-27 1:00:00
2012-12-27 2:00:00

これが不明な場合はお知らせください。

4

2 に答える 2

3

を使用するだけCURDATE()です。例えば

SELECT *
FROM tableName
WHERE DATE(s_timestamp) = CURDATE()
于 2012-12-28T00:22:25.873 に答える
2

これは、タイムスタンプを にキャストするよりも効率的である可能性がありますDATE。特に、タイムスタンプ列にインデックスがある場合 (必要です):

SELECT *
FROM tableName
WHERE s_timestamp >= CURDATE()

または、将来の日付を除外する場合:

SELECT *
FROM tableName
WHERE s_timestamp >= CURDATE()
  AND s_timestamp < DATE_ADD(CURDATE(), INTERVAL 1 DAY)

これが機能するのは、 aDATETIMEまたは aを aTIMESTAMPと比較するとDATEDATEは実際には の時間部分を持つと解釈されるからです0:00:00

于 2012-12-28T00:32:36.283 に答える