Php MySQL查询将日期字符串解释为日期

Php MySQL查询将日期字符串解释为日期,php,mysql,datetime,Php,Mysql,Datetime,我看到了一些关于这个问题的帖子,但是我没有让它正常工作。我有一个PHP变量,最初作为字符串发布。为了能够处理一周的日期范围,我使用strotime将其转换为datetime格式(例如2013年7月22日echos as 1374476400) 我的表格的日期以Y-m-d格式存储为文本(例如,2013年7月22日存储为2013-07-22)。我需要运行一个比较这两个值的查询,以查找在我的一周范围内的日期,因此我尝试将该文本转换为datetime格式以进行比较 以下是我正在使用的SQL: $wk_b

我看到了一些关于这个问题的帖子,但是我没有让它正常工作。我有一个PHP变量,最初作为字符串发布。为了能够处理一周的日期范围,我使用strotime将其转换为datetime格式(例如2013年7月22日echos as 1374476400)

我的表格的日期以Y-m-d格式存储为文本(例如,2013年7月22日存储为2013-07-22)。我需要运行一个比较这两个值的查询,以查找在我的一周范围内的日期,因此我尝试将该文本转换为datetime格式以进行比较

以下是我正在使用的SQL:

$wk_begin = $_POST['wk_begin'];
$wk_begin = strToTime($wk_begin);
$wk_end = $wk_begin + 8;
$sql = "SELECT * FROM myTable WHERE (DATE(date)>=$wk_begin AND DATE(date)<$wk_end)";

date
在mysql中是一个保留字,用它作为一个字段名,用反勾号将其括起来

此外,您的变量插入需要用撇号括起来

SELECT * FROM myTable WHERE (DATE(`date`)>='$wk_begin' AND DATE(`date`)<'$wk_end'
更新


“基于日期”可以用作不带引号的字段名。

“我的表的日期存储为文本”这就是问题所在为什么不将日期存储为日期!?在数据库中。然后在date1和date2之间使用。我试过这个。它仍然不起作用。实际上它也适用于字符串。但我不相信它。方法是将其存储为日期值。是否检查$wk\u begin和$wk\u end的值?您是否尝试运行sql提供实际日期而不是传递日期?谢谢。但是,我不认为这能处理$wk_begin在月底后8天内下跌的常见情况。还有7个字可以说。。。事实上,我很肯定它会锻炼的。我去过那里。那样做了。
<?php
$wkbegin = $_POST['wk_begin'];
$wk_begin = strToTime($wkbegin);
$d=date('j', $wk_begin)+8;
$m=date('n', $wk_begin);
$y=date('Y', $wk_begin);
$wk_end = date('Y-m-d', mktime(0,0,0, $m, $d, $y));
$wkbegin = date('Y-m-d', $wk_begin);
$sql = "SELECT * FROM `myTable` WHERE `date`>='".$wkbegin."' AND `date`<'".$wk_end."'";
?>
$sql = "SELECT * from myTable WHERE `date` >= ".$db->quoteAndEscape($wk_begin)." and `date` < ".$db->quoteAndEscape($wk_end);
<?php
$wkbegin = $_POST['wk_begin'];
$wk_begin = strToTime($wkbegin);
$d=date('j', $wk_begin)+8;
$m=date('n', $wk_begin);
$y=date('Y', $wk_begin);
$wk_end = date('Y-m-d', mktime(0,0,0, $m, $d, $y));
$wkbegin = date('Y-m-d', $wk_begin);
$sql = "SELECT * FROM `myTable` WHERE `date`>='".$wkbegin."' AND `date`<'".$wk_end."'";
?>