我希望有人可以帮助解决看起来不像我需要做的MySQL查询。
客户已要求我对其网站着陆页的更新系统进行改进。目前,更新系统允许他们对网站的任何近期更改提供快速2
行条目。他们这样做是将数据输入HTML表单并将数据加载到MySQL数据库中。
目前,此系统仅使用“已创建”列,TIMESTAMP
设置为CURRENT_TIMESTAMP
。我在表中添加了一个名为postdate的列。 Postdate为空友好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时间比较必须有一些微妙之处,我只是没有抓到这里。
我将非常感谢任何帮助,我将放弃互联网。