我的数据库表中有一列包含SQL时间戳(例如,2009-05-30 19:43:41)在我的php程序中我需要Unix时间戳的等价物(一个整数)。
$posts = mysql_query("SELECT * FROM Posts ORDER BY Created DESC");
$array = mysql_fetch_array($posts);
echo $array[Created];
在它现在回显SQL时间戳的地方,我需要一个Unix时间戳。有什么简单的方法可以做到这一点吗?
对于用MySQL的时间戳格式保存日期和时间值,还是以自定义的无符号INT格式保存时间值,我陷入了两难境地。这里的主要考虑因素是检索的速度、PHP中适当的范围计算以及偶尔格式化为人类可读的值。
每种类型及其范围所需的存储空间:
DATETIME 8 bytes '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP 4 bytes '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
UNS
我最初的做法是:
$current = time(); // save this to column CURRENT_TIME with column type VARCHAR
//retrieve it like this
$retrieved = mysql_query(....) //assume query for getting the stored time value
$time = strtotime($retrieved);
我遇到了以下几种方法:
使用gmstrftime处理格林尼治时间
对列使用INT而不是VARCHAR
使用mysql函数CURTIME或C
我把“生日”作为时间戳(整数)存储在Sphinx搜索引擎中。
(例如)
User DOB is "12-01-1960" (Age is 55)
Sphinx side: 3980298496 (MySQL handle this from DB to Sphinx)
在PHP方面,出于搜索目的,我想计算时间戳,如下所示,但它给出了负值,因为如果日期小于1970年1月1日,PHP就会给出负值
Carbon::now()->subYears('55')->timestamp = -288316800
如何制作一个积极的时间戳?这样我就可以在PHP中进行
我对此进行了搜索,但什么也找不到。
我有一张文章桌。当我写新文章时,我会使用php time()函数将时间写入mysql表中。
我的桌子是
id文章时间
时间数据类型为INT(无符号)
我的问题是我想展示从上周到今天的文章,或者从上个月到今天的文章。
我的mysql查询应该是怎样的?
通常我会这样做
SELECT * FROM articles ORDER BY Time DESC
这给了我从今天到过去的数据。我该怎么做呢?我想不出解决办法。我应该一起使用php-mysql,或者我可以只使用mysql吗?你能给我一些想法或例子吗?谢谢。
编辑:
我按照建议改成了datetime,现在我想我有时