2012-03-31 11 views
1

私のSQLクエリでは、過去24時間のレコードをどのように見つけることができますか? 私はdbに挿入するためにtime()関数を使用しています。 私はあなたが同じ暦日以内にチェックするために探している場合1332673046は過去24時間の時間フィールドを持つレコードを検索

+0

可能な複製[MySQL:過去24時間のレコード、時間で挿入](http://stackoverflow.com/questions/2783740/mysql-records-inserted-by-hour-for-the-last-24 -hours) – bernie

+0

レコードにタイムスタンプ/ datetime列が含まれていますか? –

+0

@Shipluはい私はタイムスタンプを使用しています。 –

答えて

1
select somefield from yourtable where timefield >= subtime(current_timestamp(), '1 00:00:00'); 
+0

私はmysqlを実行しているときに 'MySQLが空の結果セット(つまりゼロ行)を返しました'と言っています。 –

+0

ゼロ行はエラーではありません。これは、条件に一致する行がないことを意味します。これは、すべての行が24時間より古い場合、または表が空の場合に発生します。 –

+0

しかし、問題は30分前に入力した行があることですか? –

1

あなたはBETWEEN

SELECT * FROM users 
WHERE created_at BETWEEN '2012-03-31 00:00:00 UTC' AND '2012-03-31 23:59:59 UTC' 
1

私は確かではない午前使用できる時間は、このformat.Egに格納されたタイムスタンプを使用していますあなたが過去24時間以内に言うように、または、ので、ここで私は通常、両方のケースのために何をすべきかです:

a)は同じ暦日の場合:

CONVERT(VARCHAR(8), myTable.myDate, 112) = CONVERT(VARCHAR(8), GETDATE(), 112) 

UNIXタイムスタンプは、あなたが必要があるとして、あなたが日付を格納していることを考えると、日付が過去24時間以内であるためには、b)の(包括的)

DATEDIFF(hour, myTable.myDate, GETDATE()) <= 24 
1

算術だろうシンプルDATE、

SELECT * 
FROM `table1` 
WHERE `time_col` BETWEEN NOW() AND NOW()- INTERVAL 24 HOURS; 
0

あなたはMySQLs DATETIME形式で日付を格納検討する必要があります。この

SELECT 
    // fields you need 
FROM `table` 
WHERE 
    `date_field` BETWEEN UNIX_TIMESTAMP(DATE_SUB(NOW() INTERVAL 24 HOUR)) AND UNIX_TIMESTAMP() 

ようUNIX_TIMESTAMP MySQLの日付計算をはるかに簡単にするためです。

関連する問題