0

日付を Unix タイムスタンプ (つまり 1369763646) として保存しているデータベースがあります。

特定の日付のデータを取得するには、まず配列内のすべてのデータを取得してから、PHP の日付関数を使用してループし、特定の日付の結果を分離する必要があります。

$today = date("Y-m-d");
$collect = array();
foreach($data as $row)
{
    $date = date("Y-m-d",$row['date']);
     if($date == $today)
      $collect[] = $row;
}

のような単一のクエリですべてのデータを配列に取得せずに、タイムスタンプから特定の日付のデータのみを取得する方法はありますか..

SELECT * FROM table WHERE date = '28-05-2013';
4

4 に答える 4

2

FROM_UNIXTIMEクエリでとを使用DATEします。

SELECT * FROM table WHERE DATE(FROM_UNIXTIME(date)) = '2013-05-28';
于 2013-05-28T18:57:29.187 に答える
1

クエリで使用from_unixtime()します。

SELECT * 
FROM table 
WHERE SUBSTRING_INDEX(FROM_UNIXTIME(date), ' ', 1) = '28-05-2013'

これにより、日付フィールドがタイムスタンプから日付形式 (28-05-2013 22:13:02) に変換されます。SUBSTRING_INDEX()次に、日付フィールドの最初の部分 (2013 年 5 月 28 日) を取得し、次の部分には標準の WHERE 句を使用できます:)

于 2013-05-28T18:56:49.357 に答える
0

これを試して?

$start = strtotime( '2013-05-28 00:00:00' );
$end   = strtotiem( '2013-05-28 23:59:59' );
$sql = "SELECT * FROM table WHERE date BETWEEN {$start} and {$end}";

from_unixtimeより良いかもしれませんが、これはタイムスタンプの計算を PHP に任せます。クエリが遅くなる可能性があるため、PHP を好む傾向があります。

于 2013-05-28T18:57:41.753 に答える
0

それはまさにあなたが求めているものではありませんが、あなたはすることができます

$timestamp = mktime(0,0,0,5,28,2013);

目的の日付をタイムスタンプとして取得し、それを使用してクエリを実行するには

于 2013-05-28T18:55:51.133 に答える