2013-10-01 50 views
-1

查询1为什么查询得到0行

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; 
+2

查询是不同的 - 他们在不同的范围(08-01 VS 08-31),并与不同类型的 –

+0

PLZ expalin操作,其中错在这里 –

+1

你可以张贴表中创建报表,以及一些示例数据,理想作为一个SQLFiddle? –

回答

1

Reference

如果被叫不带参数,返回一个UNIX时间戳(秒因为 '1970-01-01 00:00:00' UTC)作为无符号整数。如果使用date参数调用UNIX_TIMESTAMP(),则它会返回自1970年1月1日“1970-01-01 00:00:00”以来秒数的值。日期可以是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) 
+0

我的问题是为什么第一个查询不给结果 –

+0

后http://sqlfiddle.com/ –

相关问题