欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

TIMESTAMP格式的数据用SELECT从MySQL中读取到php中不是数字,是可读的日期。

程序员文章站 2022-05-08 12:59:06
...
echo $row[0];
echo time();
$row是从数据库中读出来的时间。
显示结果:
2013-05-02 18:50:15
1367492310

是我数据类型没设置对么?还是MySQL或者PHP自动转换了?怎么才能直接读出时间戳?我知道可以用时间转换函数,但是我想知道能不能直接读取到时间戳。来回转换感觉很2。


回复讨论(解决方案)

先用mysql客户端读出来看看

先用mysql客户端读出来看看
我用命令行试过了,所有的时间日期类型直接读出来全都是可读的。不是整数。

那看来就是php转成时间戳了

那就是你的字段类型是datetime类型了。

那就是你的字段类型是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'] 就是 20130503112940

这一点手册中说的很清楚了,自己瞎猜有什么用?

TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。

TIMESTAMP值返回后显示为'YYYY-MM-DD HH:MM:SS'格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。