使用PHP,CodeIgniter和MySQL显示查询日期字段问题?

时间:2014-07-25 17:35:29

标签: php mysql sql codeigniter

我将MySQL中的表更改为时间戳,以便我可以看到创建用户的时间:

ALTER TABLE  `users` CHANGE  `created_date`  `created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

使用CodeIgniter我查询了数据库并获得了所有用户的行结果:

$this->db->get('users');

在我看来,我试图使用PHP date()显示结果:

<?php echo date("d-m-Y", $row->created_date); ?>

我收到此错误消息,我不明白:

Severity: Notice
Message: A non well formed numeric value encountered
Filename: users/view_all_users.php
Line Number: 19

本身:

<?php echo $row->created_date ?>

产生

01-01-1970 0000-00-00 00:00:00

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:3)

date()的第二个参数必须是valid time stamp01-01-1970 0000-00-00 00:00:00不是有效的时间戳。

$arr = explode(' ',$row->created_date);
$date = $arr[1] . ' ' . $arr[2];
echo date("d-m-Y", strtotime($date));

请注意,此字符串:01-01-1970 0000-00-00 00:00:00可能表示您字段中的值错误,但此字符串:1970-01-01 00:00:00适用于strtotime()

编辑我有一种怪异的感觉,你确定完整的字符串是由第二个回声输出,还是你的两个回声发生,因此模仿一个无效的字符串?在这种情况下:

echo date("d-m-Y", strtotime($row->created_date));

会马上工作!

答案 1 :(得分:0)

当您使用TIMESTAMP数据类型时,MySQL会返回繁琐的字符串。您可以将其转换为您在查询中期望的Unix值:

SELECT UNIX_TIMESTAMP(`created_date`)...

(并在保存时将时间戳转换为字符串)

或者您只需在数据库中使用整数数据类型并绕过所有字符串业务。