0

このコードを使用すると、その情報に関するタイムスタンプが別の日付と等しいすべての情報を取得できます。

コードは次のとおりです。

$information="SELECT * FROM scheda_anagrafica WHERE FROM_UNIXTIME('time_inserted','%d-%m-%Y') = '" . $giorno_selcted. "'
 "; 
$result1 = mysql_query($information) or die (mysql_error());
while( $row = mysql_fetch_array($result1)) {

    echo $row['information1'];

}

giorno_selectedは次のように出力します:25-09-2012ここで何が間違っているのですか?ありがとう!

4

1 に答える 1

0

まず、where句の演算子の左側でmysql関数を使用しないでください。このように、mysqlは、速度とリソース使用量(IO、CPU)についてクエリを最適化する代わりに、比較する値を計算するためにディスク上の完全なテーブルを読み取る必要があります。

私が理解しているあなたの質問とコメントから、あなたはあなたの表現の文字列と同じ日を持つ行をデータベースに照会していることがわかります$giorno_selected。したがって、その特定の日の0:00から23:59までのタイムスタンプを持つすべての行を検索する必要があります。

$giorno_timestamp_start = date_create_from_format('d-m-Y', $giorno_selected)->getTimestamp();
$giorno_timestamp_end = $giorno_timestamp_start + 86399; //add almost all seconds per day onto the start timestamp

$information="SELECT * FROM scheda_anagrafica WHERE time_inserted BETWEEN " . $giorno_timestamp_start. " AND ". $giorno_timestamp_end; 
$result1 = mysql_query($information) or die (mysql_error());
while( $row = mysql_fetch_array($result1)) {

    echo $row['information1'];

}

これは、time_inserted列がタイプintegerでunix_timestampdsを保持している場合に機能します。タイプのdatetime場合、またはtimestamp次のようにクエリを変更する必要がある場合:

$information="SELECT * FROM scheda_anagrafica WHERE time_inserted BETWEEN FROM_UNIXTIME(" . $giorno_timestamp_start. ") AND FROM_UNIXTIME(". $giorno_timestamp_end .")";
于 2012-09-26T15:22:56.940 に答える