-1

クエリ 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 行が返され、2 番目のクエリではレコードが返されるのはなぜですか?

このテーブルでは、これら 2 つの日付の間に 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;
4

1 に答える 1

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)
于 2013-10-01T11:24:05.303 に答える