用php和sql处理日期和时间信息
我正在构建一个程序,通过twitter api从推特上获取日期和时间信息,我现在的挑战是我需要弄清楚最好的计划是如何存储这样的时间戳:Fri Jul 16 16:55:52+0000 2010,将它们存储到mysql数据库中,然后在存储之后,对数据库进行sql调用,按最近的日期对它们进行排序您需要将mysql字段上的数据类型设置为用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格式 比如说 $
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
,这样会更简单,节省两个字符串格式化/解析阶段。