在我的网站上,我们存储所有时间和日期格式如下:
表栏:日期 - 2012年1月16日 表栏:时间 - 下午06:36:50
这对那些生活在不同时区的人造成了问题,因此我们正在考虑将其更改为简单的time()字符串,但是因为我们网站上的大量内容已经有这样的时间(旧的,不是时间) ()字符串)在数据库中,我们希望保留这些数据,因此想知道我们如何将这些字符串更改为time()。
我理解如何更新数据库和所有,我实际上将16.01.201206:36:50转换为各自的time()字符串,因为strtotime喜欢完美的东西。
感谢您的时间,我期待您的建议。
答案 0 :(得分:2)
您是在询问如何在数据库中进行转换,还是在将数据库加载到PHP时如何从数据库转换日期时间?
如果是后者,您可以通过多种方式设置日期格式。
取自对于date_format的PHP手册的评论:
<?php
$result = mysql_query("SELECT `datetime` FROM `table`");
$row = mysql_fetch_row($result);
$date = date_create($row[0]);
echo date_format($date, 'Y-m-d H:i:s');
#output: 2012-03-24 17:45:12
echo date_format($date, 'd/m/Y H:i:s');
#output: 24/03/2012 17:45:12
echo date_format($date, 'd/m/y');
#output: 24/03/12
echo date_format($date, 'g:i A');
#output: 5:45 PM
echo date_format($date, 'G:ia');
#output: 05:45pm
echo date_format($date, 'g:ia \o\n l jS F Y');
#output: 5:45pm on Saturday 24th March 2012
?>
这些只是一些例子。请查看this页面以获取更多想法。
根据评论进行修改:
您可以使用DateTime::createFromFormat,它允许您指定要传递的日期时间的格式。
答案 1 :(得分:1)
查找名为mysql
str_to_date
函数
假设您有一个名为date_str
的dbtable文本字段,其格式为YYYYMMDD。您可以使用ff查询输出正确的日期字段。
SELECT str_to_date(date_str, '%Y%m%D') as date_fld FROM dbtable ...
答案 2 :(得分:0)
我知道这有点晚了,但我也认为这应该通过数据库完成。我认为这将删除一些额外的步骤,并且可能比使用PHP的日期格式化功能快一点。您可以编写如下所示的SQL语句:
"SELECT UNIX_TIMESTAMP(TIMESTAMP(STR_TO_DATE(Date, '%d.%m.%Y'), STR_TO_DATE(Time, '%r'))) AS epoch FROM Table"
这应该以您正在寻找的正确时间()格式返回所有内容。