2013-04-20 62 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

相关问题