php5.1.6とMySQLの質問です。

以下のようなテーブルから、reg_dateが今現在から72時間以内のレコードとを取り出したいのです。
どのように書けばいいですか?
reg_dateの型はdatetimeで、テーブル内でsortされていないとします。
また時間計算は秒単位で行いたいと考えています。

いまいち日付計算の書き方が判らず苦労しています。
よろしくお願いします。


テーブル名:log_tbl
id, name, reg_date
1, aaa, 2011-02-21 12:54:35
2, bbb, 2011-03-16 22:10:03
3, rrr, 2011-03-16 23:40:23
4, kkk, 2011-04-10 19:54:58
5, eee, 2011-04-10 21:02:35
6, qqq, 2011-04-10 21:36:20

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/04/11 13:25:05
  • 終了:2011/04/11 20:22:17

回答(5件)

id:taroe No.1

taroe回答回数1099ベストアンサー獲得回数1322011/04/11 13:36:45

ポイント16pt

select * from log_tbl WHERE reg_date > ADDTIME(now(),INTERVAL -72 HOUR)

id:seadwell

動きません。

文法エラーが出ます。

以下の構文はおかしいですか?

コピペで/p>が入ります。実際のSQL文には入っていません。



SELECT

Q.user_id as user_id,

Q.uid as uid,

Q.shop_id as shop_id,

Q.item_id as item_id,

I.item_name_kana as item_name_kana,

Q.reg_date as reg_date

FROM

user_questlog as Q

LEFT JOIN

item_master as I

ON

Q.item_id = I.item_id

WHERE

Q.user_id = $id

AND

Q.reg_date > ADDTIME(now(),NTERVAL -72 HOUR)

2011/04/11 17:58:40
id:asuka645 No.2

あすか回答回数856ベストアンサー獲得回数972011/04/11 15:59:11

ポイント16pt

下記のようにSQL文だけで実現できます。

PHPは不要です。


SELECT * FROM LOG_TBL WHERE reg_date > ADDTIME(NOW(), '72:00:00');
id:seadwell

ご回答ありがとうございます。

こちらは、文法エラーは出ませんが思惑のデータを拾ってくれません。

配列は空です。

データは、本日入力しましたので日付に間違いはないはずです。

AND以降を取りますと、正常に動作します。

おかしいですね~。

2011/04/11 17:37:29
id:chuken_kenkou No.3

chuken_kenkou回答回数722ベストアンサー獲得回数542011/04/11 18:14:07

ポイント16pt

AND

Q.reg_date > ADDTIME(now(),NTERVAL -72 HOUR)

INTERVALのIが欠落していますが?

id:seadwell

ほんとですね。

お恥ずかしい。

しかし、Iを入れましたがシンタックスエラーは消えません><

2011/04/11 18:37:17
id:hanako393 No.4

hanako393回答回数1142ベストアンサー獲得回数872011/04/11 19:21:54

ポイント26pt

SELECT now();

正しい日時を返しているか確認してみてはどうでしょうか?

http://sf51.blog42.fc2.com/blog-entry-13.html


ADDTIME('2011/04/11 19:20:00', '72:00:00');

のように値を直接指定して試してみることでも原因がわかるかもしれませんね。



ADDTIME(NOW(), '72:00:00');

ADDTIME(now(),NTERVAL -72 HOUR)

http://kenjisato.info/archives/157

id:seadwell

ご回答ありがとうございます。

ADDTIME(now(),INTERVAL -72 HOUR)

はADDTIMEをADDDATEとしたら思うとおりのデータを取得してくれました。

参考サイトを教えていただきありがとうございます。

2011/04/11 20:03:02
id:asuka645 No.5

あすか回答回数856ベストアンサー獲得回数972011/04/11 19:28:51

ポイント26pt

2で回答した者です。

SQL文が間違っていました。ごめんなさい。

正しくは下記の通りです。


SELECT * FROM LOG_TBL WHERE reg_date > SUBTIME(NOW(), '72:00:00');
id:seadwell

やったー!できました^^

無事動作を確認しました。

ありがとうございました。

2011/04/11 19:45:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません