时间戳比较器

时间:2013-01-20 19:53:06

标签: mysql time comparison

我希望有人可以帮助解决看起来不像我需要做的MySQL查询。

客户已要求我对其网站着陆页的更新系统进行改进。目前,更新系统允许他们对网站的任何近期更改提供快速2行条目。他们这样做是将数据输入HTML表单并将数据加载到MySQL数据库中。

目前,此系统仅使用“已创建”列,TIMESTAMP设置为CURRENT_TIMESTAMP。我在表中添加了一个名为postdate的列。 Postdate为空友好TIMESTAMP,其值通过PHPHTML设置。

到目前为止,这一切都相当简单(并且特定于我的项目)。这对我来说很奇怪:

根据表格规范:

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时间比较必须有一些微妙之处,我只是没有抓到这里。

我将非常感谢任何帮助,我将放弃互联网。

0 个答案:

没有答案