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

I altered a table in MySQL to be a timestamp so I could see when a user was created:

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

Using CodeIgniter I queried the database and got my row results for all users:

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

In my view I'm trying to display the results using PHP date():

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

and I'm getting this error message, which I don't understand:

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

where by itself:

<?php echo $row->created_date ?>

produces:

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

Any ideas what I've done wrong?

2个回答

the second argument for date() must be a valid time stamp. 01-01-1970 0000-00-00 00:00:00 is not a valid timestamp.

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

note that this string: 01-01-1970 0000-00-00 00:00:00 probably denotes that the value in your field is wrong, but this string: 1970-01-01 00:00:00 is valid for use with strtotime()

edit I have an eerie feeling though, are you sure that the full string is outputed by the second echo, or are your two echos taking place, hence mimicking an invalid string? in which case this:

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

will work right away!

douzhi9635
douzhi9635 这可能是我们想到的一个更简单的问题:看看我的更新
6 年多之前 回复
dongmieqiao3152
dongmieqiao3152 字符串2014-07-25 10:59:25是DATETIME字段的正常格式。 现在你可以将它进一步格式化为更多罗嗦,或删除小时,只需输入日期:)
6 年多之前 回复
dpsr1670
dpsr1670 我还通过添加DATETIME而不是TIMESTAMP来更改我的ALTER TABLE SQL,所以它现在看起来像这样ALTER TABLE用户CHANGE created_date created_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP; 所以它现在应该是一个日期时间,并且不使用PHP date()它显示当前日期和时间为2014-07-25 10:59:25,所以我认为你是对的CodeIgniter正在处理日期字段。
6 年多之前 回复
dss524049
dss524049 在上面的例子中,我只需要调用$ this-> db-> get('users'); 它返回数据数组中的所有内容,我只是从模型传递给控制器​​进行查看。
6 年多之前 回复
dopr25398
dopr25398 你可以发布定义行的代码吗? 返回的字符串不是时间戳,必须由codeigniter以某种方式更改
6 年多之前 回复
dsgw3315
dsgw3315 我绝对可以使用日期字段,但我无法弄清楚如何在MyPHPAdmin中添加它并让它添加当前日期默认值。 只有选项是CURRENT_TIMESTAMP。
6 年多之前 回复
doumu1951
doumu1951 为什么你需要一个时间戳而不是一个易于使用/格式/考虑DATETIME字段? 在您的字段中获得有效的时间戳更多的是将有效的时间戳放入然后更改您的表
6 年多之前 回复
douzun4443
douzun4443 我如何改变我的表以获得有效的时间戳,而不是处理它的代码? 也不确定为什么它给了我1970年的日期,这不是我系统的当前时间戳。
6 年多之前 回复



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

  SELECT UNIX_TIMESTAMP(created_date)... 
</ code> </ pre>

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

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

展开原文

原文

MySQL returns that cumbersome string when you use the TIMESTAMP data type. You can either convert it to the Unix value you are expecting in your query:

SELECT UNIX_TIMESTAMP(`created_date`)...

(and also convert your timestamp to a string when you save it)

Or you can simply use an integer data type in the database and bypass all the string business.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐