2012-02-22 61 views
10

我有一个问题...我的MySQL数据库中有一个表存储JQuery类型日历内的待办事项列表条目。
我不得不产生calendar_id一次我创建时间戳(视为一次我点击任何压延dateboxes的,在一些待办事项任务键 - 把它简单:创建日期时间),将产生一个提醒。日期时间到整数

此待办事项列表活动的应用程序,是我一直在努力用我自己的管理系统进行集成的外部应用程序。我注意到,时间戳列的格式为int(11),所以输入的任何时间戳都将被转换为整数。

例如,看看这个:

2012-02-22 15:31:24 

转换为

1329899400 

我们如何可以转换的日期时间,以这种格式?当我尝试时,不是在几秒钟内:

intval(floor($datetime/86400)); 

任何帮助?

+0

我不相信DateTime不能用Integer表示。 DateTime是自1970年特定日期以来的秒数(取决于几种优惠)。您将不得不找出该值所代表的含义,因为它看起来确实不像您真正知道的那样。 – 2012-02-22 17:06:28

+0

是的,我搞清楚了什么值代表,因为对于任何插入的时间戳,数字序列是有点“奇怪”。至少对我来说,这是我第一次体验这一点,因为我还在学习PHP/MySQL: ) – foxns7 2012-02-22 17:13:44

+0

@Selang:数字是[UNIX时间戳](http://en.wikipedia.org/wiki/Unix_timestamp)。它们被广泛使用(特别是在UNIX系统上)。 – Chris 2012-02-22 17:15:44

回答

14

FROM UNIXTIME可以格式化UNIX时间戳到日期时间字段:

SELECT FROM_UNIXTIME(time) 
FROM ... 

反向功能将是UNIX_TIMESTAMP


或者你可以做到这一点在PHP中,如果有的话:
存储日期到数据库格式,它是这样的:

$datetimeStr = '2012-02-22 15:31:24'; 
$datetime = strtotime($datetimeStr); 

要从数据库检索并格式化到原始格式,使用这样的事情:

$dateTimeFromDB = '1329921084'; 
$datetimeStr = date('Y-m-d H:i:s', $dateTimeFromDB); 
+0

Geez,我完全是一个愚蠢的不学习这个Unixtime函数......感谢回复 – foxns7 2012-02-22 17:06:08

+0

它的工作!谢谢... – foxns7 2012-02-22 17:44:12

+1

约会比01.01.1970小? – 2015-12-29 16:06:46

6

这里是一个不错的MySQL的UNIX_TIMESTAMP()功能为您

+0

是“INSERT INTO db.table('timestamp')VALUES(UNIX_TIMESTAMP($ datetime))”;在我的情况下是正确的命令? – foxns7 2012-02-22 17:10:53

+0

如果你的'$ datetime'是'YYYY-MM-DD HH:MM:SS'格式(注意你可以使用不同的分隔符而不是'-'和':',那么是的)。另外,看到你使用PHP ,你可以使用它的strtotime()函数 – Mchl 2012-02-22 17:15:49

+0

我忘了告诉你,我确实执行了$ datetime = strtotime($ datetime);但是数据库中的值只能读取2012年,即'Year'部分。 。这是怎么发生的? – foxns7 2012-02-22 17:19:03