-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

3

この質問は、DBA交換に適している可能性があります...

...しかし、私の推測では、UNIX_TIMESTAMP('anything')戻り値とint/decimal/numberおよび'2013-08-01 23:59:59'がデータベースのデータ型の形式であるためですDateTime

.

EG:SessionInfo.SessionCallTimeと互換性のあるデータ型を使用しませんUNIX_TIMESTAMP()

于 2013-10-01T13:21:52.253 に答える