2013-04-20 51 views
1

我有一個做MySQL數據庫上查詢一些PHP代碼 - 如果我做了查詢在phpMyAdmin它的作品 - 但如果我在PHP做同樣的搜索php和mySQL的日期不起作用 - 與美國vs歐洲結構有關?

從phpMyAdmin的複製它不工作正常工作的回報所有的行

SELECT * FROM contract WHERE DATE(`fdos`) >= '2013-05-01' And DATE(`fdos`) <= '2013-05-09' 

我的php代碼不工作(無論查詢)只返回它應該30行中的3。日期的格式不能改變,這就是我如何獲取數據。

$startdate = "2013-05-01"; 
$enddate = "2013-06-01"; 
function getAllContracts($startdate, $enddate) 
{ 
$sd = date('Y-m-d', strtotime(str_replace("-","/",$startdate))); 
$ed = date('Y-m-d', strtotime(str_replace("-","/",$enddate))); 
$query1="SELECT * FROM contract WHERE DATE(`fdos`) >= '$sd' And DATE(`fdos`) <= '$ed'"; 
$query2="SELECT * FROM contract WHERE DATE(`fdos`) >= Date('$startdate') And  DATE(`fdos`) <= Date('$enddate')"; 
} 

其他東西補充的是,我的MySQL存儲日期爲這種格式「2013年5月1日」一文,這就是爲什麼我要叫DATE

+0

是那應該是05年1月5日 - 9月5日? – Fabio 2013-04-20 15:10:19

+0

?不知道你在哪裏得到了九月......但那可能是2013年第一季度到2013年6月1日 – morty346 2013-04-20 15:13:45

+0

變量$ startdate和$ enddate,它們來自哪裏?表單提交? – 2013-04-20 15:20:50

回答

1

你必須把「解決這個變量

$startdate = "2013-05-01"; 
$enddate = "2013-06-01"; 
+1

我認爲他指的是結果的數量,這是一個錯字 – Fabio 2013-04-20 15:11:56

+0

我做 - 對不起,複製粘貼到這裏 - 很肯定會給一個語法錯誤,所以甚至不可能 – morty346 2013-04-20 15:12:19

+0

嘗試這種方式: $ startdate = 「2013年5月1日」; $ enddate =「2013-06-01」; 函數getAllContracts($ startdate,$ enddate) { $ query1 =「SELECT * FROM contract WHERE STR_TO_DATE('fdos','%Y-%m-%d')> = STR_TO_DATE($ startdate,'%Y- %m-%d')和STR_TO_DATE('fdos','%Y-%m-%d')<= STR_TO_DATE($ enddate,'%Y-%m-%d')「; ('startdate,'%Y-%m-%d')和STR_TO_DATE('fdos','%Y-%m-%d')> = SELECT * FROM合同WHERE STR_TO_DATE ','%Y-%m-%d')<= STR_TO_DATE($ enddate,'%Y-%m-%d')「; } – 2013-04-20 15:24:46

0

我認爲這個問題是在查詢本身,嘗試使用BETWEEN爲comaprison

相關問題