MySQL:在上午12点和凌晨1点按时间排序不正确

时间:2015-02-11 20:06:21

标签: mysql sql datetime

我面临的问题是MySQL正在考虑

  

2015-02-12 01:08:40

小于

  

2015-02-12 12:54:49

我的查询

SELECT DISTINCT(time) FROM `dcn_payments` ORDER BY `time` ASC

我的表格结构

CREATE TABLE `x` (
  `payId` int(8) unsigned NOT NULL AUTO_INCREMENT,
  `receipt` char(0) DEFAULT NULL,
  `amount` decimal(13,2) NOT NULL,
  `pack` char(20) NOT NULL,
  `date` date NOT NULL,
  `time` char(19) NOT NULL,
  `status` tinyint(1) unsigned NOT NULL,
  `opId` int(4) NOT NULL,
  `cId` int(7) NOT NULL,
  `lnId` smallint(4) NOT NULL,
  PRIMARY KEY (`payId`),
  KEY `cId` (`cId`),
  KEY `opId` (`opId`),
  CONSTRAINT `cId` FOREIGN KEY (`cId`) REFERENCES `customers` (`cId`) ON UPDATE CASCADE,
  CONSTRAINT `x1` FOREIGN KEY (`opId`) REFERENCES `operators` (`opId`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1

我的输出

time Ascending 1
2015-02-12 01:02:05
2015-02-12 01:08:27
2015-02-12 01:08:40
2015-02-12 12:54:49
2015-02-12 12:55:43
2015-02-12 12:56:33
2015-02-12 12:57:02

修改 我在我的DB列中插入日期('Y-m-d h:i:s'),我做错了吗? 因为我刚刚在localhost上插入12:54(hh:mm)而不是(00:54),我的系统时间是12小时(如果重要的话)

2 个答案:

答案 0 :(得分:3)

12:54:49约为五分钟, PM 01:08:40大概是十点一点 AM 。一个o时钟AM将表示为13:00:00,因此MySQL在这里正确排序。

答案 1 :(得分:1)

您希望插入date('Y-m-d H:i:s')而不是date('Y-m-d h:i:s')。首都H是24小时小时,小写h是12小时小时。 MySQL使用24小时格式。