查询1
SELECT SessionInfo.IVRSessionInfoID
FROM SessionInfo
WHERE SessionCallTime BETWEEN UNIX_TIMESTAMP('2013-08-01 00:00:00')
AND UNIX_TIMESTAMP('2013-08-01 23:59:59')
ORDER BY SessionInfo.SessionCallTime DESC;
查询2
SELECT SessionInfo.IVRSessionInfoID
FROM SessionInfo
WHERE ( SessionInfo.SessionCallTime BETWEEN '2013-08-01 00:00:00'
AND '2013-08-01 23:59:59' )
ORDER BY SessionInfo.SessionCallTime DESC;
有什么区别?为什么第一个查询给出0行而第二个给出记录?
在此表中,这两个日期之间有20000行。
表架构
CREATE TABLE `SessionInfo` (
`IVRSessionInfoID` bigint(8) unsigned NOT NULL AUTO_INCREMENT,
`SessionCallTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`MGServerIP` varchar(15) NOT NULL,
`MGServerPort` smallint(2) unsigned NOT NULL DEFAULT '5060',
`SessionUniqueID` varchar(64) NOT NULL,
`ANI` varchar(20) NOT NULL,
`CountryID` int(4) unsigned DEFAULT NULL,
`CountryStateAreaID` int(4) unsigned DEFAULT NULL,
`AccessNumberProviderLogID` int(4) unsigned DEFAULT NULL,
`AccessNumberLogID` int(4) unsigned DEFAULT NULL,
`AccessRestrictionLogID` int(4) unsigned DEFAULT NULL,
`SubscriberCardID` bigint(8) unsigned DEFAULT NULL,
`SessionDuration` int(4) unsigned NOT NULL,
`SessionRNDDuration` int(4) unsigned NOT NULL,
`TotalCharge` decimal(15,6) unsigned NOT NULL,
`RuleSetLogID` int(4) unsigned DEFAULT NULL,
`RuleSetChargeInfoLogID` int(4) unsigned DEFAULT NULL,
`RuleSetRNDDuration` int(4) unsigned NOT NULL,
`RuleSetTotalCharge` decimal(15,6) unsigned NOT NULL,
PRIMARY KEY (`IVRSessionInfoID`),
UNIQUE KEY `UNIQUE` (`SessionUniqueID`),
KEY `SessionCallTime` (`SessionCallTime`),
KEY `ANI` (`ANI`),
KEY `CountryID` (`CountryID`),
KEY `CountryStateAreaID` (`CountryStateAreaID`),
KEY `AccessNumberProviderLogID` (`AccessNumberProviderLogID`),
KEY `AccessNumberLogID` (`AccessNumberLogID`),
KEY `AccessRestrictionLogID` (`AccessRestrictionLogID`),
KEY `SubscriberCardID` (`SubscriberCardID`),
) ENGINE=InnoDB AUTO_INCREMENT=22199955 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;
答案 0 :(得分:1)
如果不带参数调用,则返回UNIX时间戳(自1970-01-01 00:00:00'UTC以来的秒数)作为无符号整数。如果使用日期参数调用UNIX_TIMESTAMP(),则它将返回自1970-01-01 00:00:00 UTC以来的参数值。 date可以是DATE字符串,DATETIME字符串,TIMESTAMP或格式为YYMMDD或YYYYMMDD的数字。
mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP() |
+---------------------------------------------------------+
| 882226357 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00') |
+---------------------------------------------------------+
| 875996580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)