用php和sql处理日期和时间信息

用php和sql处理日期和时间信息,php,mysql,sql,database,timestamp,Php,Mysql,Sql,Database,Timestamp,我正在构建一个程序,通过twitter api从推特上获取日期和时间信息,我现在的挑战是我需要弄清楚最好的计划是如何存储这样的时间戳:Fri Jul 16 16:55:52+0000 2010,将它们存储到mysql数据库中,然后在存储之后,对数据库进行sql调用,按最近的日期对它们进行排序您需要将mysql字段上的数据类型设置为DATETIME。要插入,您需要使用strotime()将时间戳从Twitter读取到PHP可读的时间戳中,然后使用date()函数将其转换为mysql格式 比如说 $

我正在构建一个程序,通过twitter api从推特上获取日期和时间信息,我现在的挑战是我需要弄清楚最好的计划是如何存储这样的时间戳:Fri Jul 16 16:55:52+0000 2010,将它们存储到mysql数据库中,然后在存储之后,对数据库进行sql调用,按最近的日期对它们进行排序

您需要将mysql字段上的数据类型设置为
DATETIME
。要插入,您需要使用
strotime()
将时间戳从Twitter读取到PHP可读的时间戳中,然后使用
date()
函数将其转换为mysql格式

比如说

$mysqlDate = date('Y-m-d H:i:s', strtotime($dateFromTwitter));

将日期转换为有效的mysql日期时间

date('Y-m-d h:i:s', strtotime("Fri Jul 16 16:55:52 +0000 2010"));
然后需要在表中引用和插入:

$sql=“插入推文” (tw,daydate)值(“$tweet”, “$date”)

其中daydate是一个DATETIME字段。

使用PHP的strotime()确实是一种很好的方法,但我在前面发现了使用strotime()的问题。因此,您可能只希望在MySQL中执行此操作,例如:

SELECT STR_TO_DATE(
    CONCAT(
        SUBSTRING('Fri Jul 16 16:55:52 +0000 2010', 1, 20),
        ' ',
        SUBSTRING('Fri Jul 16 16:55:52 +0000 2010', -4)
    ),
'%a %b %d %H:%i:%s %Y');
请注意,这样做时,我忽略了时间戳的+0000部分


希望这会有所帮助。

有点脏,但应该可以工作。在插入过程中,获取strotime生成的时间戳并将其从_UNIXTIME(…)传递到mysql
,这样会更简单,节省两个字符串格式化/解析阶段。