ホームページ >バックエンド開発 >PHPチュートリアル >TIMESTAMP 形式のデータは、SELECT を使用して MySQL から読み取られ、数値ではなく PHP で読み取り可能な日付です。
echo $row[0];
echo time();
$row はデータベースから読み取られた時間です。
表示結果:
2013-05-02 18:50:15
1367492310
データ型が設定されていないためですか?それともMySQLやPHPによって自動的に変換されるのでしょうか?タイムスタンプを直接読み取るにはどうすればよいですか?時刻変換機能を使用できることはわかっていますが、タイムスタンプを直接読み取ることができるかどうか知りたいです。前後に切り替えるのは非常に2の気分です。
まず mysql クライアントを使用して読み上げて確認してください
まず mysql クライアントを使用して読み上げて確認してください
コマンドラインを使用して試してみました。および日付型は直接読み取られ、すべて読み取り可能です。整数ではありません。
phpはそれをタイムスタンプに変換しているようです
つまり、フィールドの型はdatetime型であるということです。
これは、フィールドの型が日時型であることを意味します。
mysql> use testDatabase changedmysql> create table time_test(id int,time TIMESTAMP);Query OK, 0 rows affected (0.47 sec)mysql> insert into time_test(id,time) values(0,now());Query OK, 1 row affected (0.05 sec)mysql> select * from time_test;+------+---------------------+| id | time |+------+---------------------+| 0 | 2013-05-03 11:18:51 |+------+---------------------+1 row in set (0.00 sec)mysql> insert into time_test(id,time) values(0,123);Query OK, 1 row affected (0.00 sec)mysql> select * from time_test;+------+---------------------+| id | time |+------+---------------------+| 0 | 2013-05-03 11:18:51 || 0 | 2000-01-23 00:00:00 |+------+---------------------+2 rows in set (0.00 sec)mysql> insert into time_test(id,time) values(0,unix_timestamp(now()));Query OK, 1 row affected, 1 warning (0.14 sec)mysql> select * from time_test;+------+---------------------+| id | time |+------+---------------------+| 0 | 2013-05-03 11:18:51 || 0 | 2000-01-23 00:00:00 || 0 | 0000-00-00 00:00:00 |+------+---------------------+3 rows in set (0.00 sec)mysql>
select id, time+0 as time from time_test
$row['time'] is 20130503112940
これはマニュアルに非常に明確に記載されていますが、自分で推測することに何の意味がありますか?
TIMESTAMP 列は、INSERT または UPDATE 操作中に日付と時刻を記録するために使用されます。値を割り当てない場合、テーブルの最初の TIMESTAMP 列は、最新の操作の日付と時刻に自動的に設定されます。 NULL 値を割り当てて、TIMESTAMP 列を現在の日付と時刻に設定することもできます。
返される TIMESTAMP 値は「YYYY-MM-DD HH:MM:SS」形式の文字列として表示され、表示幅は 19 文字に固定されます。数値を取得したい場合は、TIMESTAMP列に+0を追加する必要があります。