我希望有人可以帮助处理似乎并没有完全按照我需要的方式执行的 MySQL 查询。
客户要求我改进他们网站登录页面的更新系统。目前,更新系统允许他们提供2
有关站点最近更改的快速行条目。他们这样做是将数据输入 HTML 表单并将数据加载到 MySQL 数据库中。
目前,该系统仅使用“已创建”列,该列TIMESTAMP
设置为CURRENT_TIMESTAMP
. 我在表中添加了一个名为 postdate 的列。Postdate 对 null 友好TIMESTAMP
,通过PHP
和设置值HTML
。
到目前为止,这一切都相当简单(并且特定于我的项目)。这对我来说很奇怪:
给定表格规格为:
CREATE TABLE `updates` (
`update` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`comment` text,
`created` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`status` int(11) DEFAULT '1',
`gallery` int(11) DEFAULT NULL,
`website` int(11) DEFAULT NULL,
`covers` int(11) DEFAULT NULL,
`resume` int(11) DEFAULT NULL,
`calendar` int(11) DEFAULT NULL,
`postdate` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`update`)
) ENGINE=InnoDB
为什么要查询:
select updates.name, updates.comment, updates.status, updates.gallery, updates.website,
updates.covers, updates.resume, updates.calendar,
ifnull(postdate, updates.created) as `created`
from angela.updates
where updates.status = 1
and updates.created <= now()
order by `updates`.`created` desc
limit 15;
返回以下时间戳顺序:
2012-10-15 00:00:00
2013-12-25 00:00:00
2012-12-25 00:00:00
2013-02-01 00:00:00
2013-01-20 13:48:48
2013-01-20 13:36:44
2013-01-20 12:59:57
2013-01-20 12:56:35
2013-01-20 12:49:20
2012-10-29 11:00:12
2012-10-24 14:10:13
2012-08-14 23:53:53
2012-08-14 23:53:18
2012-08-14 23:50:34
2012-08-14 23:50:08
请注意,从 Postdate 列中提取没有特定时间的行,而从 Created 列中提取具有特定时间值的值。
MySQL 时间比较肯定有某种微妙之处,我只是在这里没有理解。
任何帮助将不胜感激,我为此放弃了互联网。