2016-05-11 1 views
0

自分の好みに合わせてタイムスタンプを取得できません。私はすべてを試しました。日付と時刻のものは何でもコーディングして、私の脳を置きます。私のレポートテーブルでは、データベースのタイムスタンプの列は私に2016-05-09 13:41:13のような結果を返します。 私はそれをそういう形にしようとしています。 05-09-2016 1:41:13 PM。フォーマットにタイムスタンプを取得できません

私の質問はそうです。

$query = "SELECT DATE_ADD(timestamp, INTERVAL 3 HOUR), timestamp, marketer, facility, name, type, phone, email, fax, description, locality, state, zip, latlng FROM leads WHERE marketer = 'Emily' 
ORDER BY DATE_ADD(timestamp, INTERVAL 3 HOUR) DESC"; 

テーブルそうのようになる:

while($row = mysqli_fetch_assoc($result)) { 
echo "<tr>"; 

echo "<td>" . $row['DATE_ADD(timestamp, INTERVAL 3 HOUR)'] . "</td><td>" . $row['marketer'] . "</td><td>" . $row['facility'] . "</td><td>" . $row['name'] . "</td><td>" . $row['type'] . "</td><td>" . $row['phone'] . "</td><td>" . $row['email'] . "</td><td>" . $row['fax'] . "</td><td>" . $row['description'] . "</td><td>" . $row['locality'] . "</td><td>" . $row['state'] . "</td><td>" . $row['zip'] . "</td><td>" . $row['latlng'] . "</td>"; 
echo "</tr>"; 

私はこの上に複数のフォーラムやドキュメントを読むが、私は問題に来ているところであるだけでなく、3+時間間隔を維持する必要がありました。

UPDATE 私は正しい時刻形式を取得していませんが、今はORDER BYではありません。クエリは結果が表示されていない

$query = "SELECT DATE_FORMAT(timestamp + INTERVAL 3 HOUR, '%m-%d-%Y %r') AS formatted_ts, marketer, facility, name, type, phone, email, fax, description, locality, state, zip, latlng FROM leads WHERE marketer = 'Emily' ORDER BY DATE_FORMAT(formatted_ts + INTERVAL 3 HOUR, '%m-%d-%Y %r') AS formatted_ts, DESC";

。注文を取り出すときに正しいフォーマットが表示されます。それが動作するにもかかわらず、'DATE_ADD(timestamp, INTERVAL 3 HOUR)'のようなPHPの配列のキーを持つ

+0

[date_format()](http://www.w3schools.com/sql/func_date_format.asp)を試しましたか? – paulsm4

+0

これは私の現在の問題です。苦労しているのはどこに、どのように私はそれを追加し、まだ3 +間隔を維持することですか?おかげで@ paulsm4 –

+0

だから実際の問題はどこですか?形式または間隔で?? –

答えて

0

まず、非常に読みやすいではないので、代わりに私はもっと賢明な何かにクエリでそれをエイリアシングをお勧めします:どのようにあなたのことをフォーマットするには

$query = "SELECT DATE_ADD(timestamp, INTERVAL 3 HOUR) as future_date, timestamp, marketer, facility, name, type, phone, email, fax, description, locality, state, zip, latlng FROM leads WHERE marketer = 'Emily' 
ORDER BY DATE_ADD(timestamp, INTERVAL 3 HOUR) DESC"; 

以下のように、単にPHPのDateTimeクラスを使用します。

while($row = mysqli_fetch_assoc($result)) { 
    $future_date = new DateTime($row['future_date']); 
    echo $future_date->format('m-d-Y g:i:sA'); 
} 
0

MySQLはDATE_FORMAT

リファレンス機能を提供します:http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

2016-05-09 13:41:13。私はそれをフォーマットするようにしています。 05-09-2016 1:41:13 PM。

SELECT ... 
     , timestamp 
     , DATE_FORMAT(timestamp + INTERVAL 3 HOUR, '%m-%d-%Y %r') AS formatted_ts 
     , ... 
    FROM ... 

%r%rは、2桁の時間(先行ゼロ付き)を返すことがあります。 1桁の数字を取得するには、%rの代わりに%l:%i:%s%pを指定する必要があります。

MySQLリファレンスマニュアル(上のリンク)は、書式文字列で使用できる指定子の完全なリストを示しています。

また、式にエイリアスを割り当てると、結果セットから参照する列名が簡単になります。

$row['formatted_ts'] 
関連する問題