3

特定の日に送信された行をユーザーがデータベースで検索できるようにしたいと考えています。日付は素晴らしい関数を使用してデータベースのフィールドに入力されますdate()が、phpstrtotime関数を使用すると、もちろん日付はまったく同じではありません。

これに役立つ賢いmysql関数はありますか?

4

3 に答える 3

4

以前、これに問題がありました。

開始日と終了日を生成してから、代わりに 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() の使用方法によって異なります

お役に立てれば :)

于 2010-01-25T21:10:20.657 に答える
3

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 の日付を使用してそれらのレコードのみを照合します。

于 2010-01-25T21:12:20.427 に答える
0

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')
于 2010-01-25T21:12:08.557 に答える