2017-09-01 107 views
6

我對MySQL數據庫編程經典ASP與ADODB和MySQL ODBC 5.3 ANSI驅動程序連接,但設置在一個簡單的MySQL查詢的地方,當我查詢的日期時,我有一些問題:在MySql的查詢中設置日期範圍時發生的罕見事件?

Select * from cdr where date(calldate)='20170901' 

查詢檢索的ASP頁面的數據,那好吧,但是當查詢

Select * from cdr where date(calldate) between '20170801' and '20170828' 

當我打印查詢,然後我從HTML複製並粘貼到MySQL工作臺,然後檢索數據,但是當在asp頁面本身不檢索任何數據。

任何想法?我想也許是與ODBC驅動程序的東西。

+0

嘗試使用格式'2017-08-01'指定日期。它有幫助嗎? –

+0

好的問題不是當我把「where date(calldate)='20170901'」問題是我把一個日期範圍,「日期(calldate)在'20170801'和'20170828'之間」如果我指定'2017-08-01'和'2017-08-31'這個問題仍然會發生,或者使用str_to_date,是一樣的。 – Artemination

+2

什麼數據類型是'calldate'? –

回答

6

如果你想使用不MySQL的默認日期格式,你必須將正確

Select * from cdr where date(calldate)=str_to_date('20170901','%Y%m%d') 

否則使用MySQL的默認格式

Select * from cdr where date(calldate)='2017-09-01' 
2

我不相信這樣的格式:'20170801'

由於calldateDATETIME,因此速度會更快:

WHERE calldate >= '2017-08-01' 
     AND calldate < '2017-08-01' + INTERVAL 28 DAY`. 

它需要INDEX(calldate)

+0

Nop,只要與cast(calldate as date)='20170901'一起工作,但如果我把cast(calldate as date)> ='20170901',那麼它就不起作用。 – Artemination

+1

在函數內部隱藏'calldate'('CAST')使得不可能使用索引來提高效率。 –