特定の日に送信された行をユーザーがデータベースで検索できるようにしたいと考えています。日付は素晴らしい関数を使用してデータベースのフィールドに入力されますdate()が、phpstrtotime関数を使用すると、もちろん日付はまったく同じではありません。
これに役立つ賢いmysql関数はありますか?
以前、これに問題がありました。
開始日と終了日を生成してから、代わりに BETWEEN 関数を使用することをお勧めします。
だから、このようなもの:
$start_date = "2009-01-01 00:00:00";
$end_date = "2009-01-01 23:59:59";
$sql = "SELECT * FROM table WHERE date BETWEEN '$start_date' AND '$end_date' AND id = 'x';
もちろん、strtotime を使用して DB から日付を取得し、タイムスタンプを追加するだけです - date() の使用方法によって異なります
お役に立てれば :)
MySQL のDATE()関数を使用して、タイムスタンプの日付部分を抽出できます。
select ... from table ... where DATE(date_column) = '2010-01-25';
PHP から '2010-01-25' を送信する際に問題がある場合は、'Ymd' をパラメーターとしてPHP の日付関数を使用して、日付部分のみを取得できます。
$d = date('Y-m-d', strtotime(...));
あなたの質問をよく見ると、それらの両方が必要になるようです。最初に PHP の日付関数を使用して日付部分のみを取得し、次に MySQL の日付を使用してそれらのレコードのみを照合します。
PHP:
$timestamp_from_php = strtotime('December 25, 2009');
SQL:
select
`fields`
from
Table t
where
date_format('Y-m-d', t.`datetime_field`) = date_format('Y-m-d', '$timestamp_from_php')