MySQL当前日期为2个设置日期

时间:2017-01-06 19:15:01

标签: mysql date between

我需要帮助处理我正在进行的项目。 这里有一个包含2个日期的表:date1和date2(更简单)

现在我需要显示当前日期介于date1和date2之间的所有行。 到目前为止我所拥有的是:

$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date" BETWEEN date1 AND date2';

但这不起作用。虽然如果我用2017-01-06替换"$date"它确实有效。现在我该如何解决这个问题? 提前谢谢!

4 个答案:

答案 0 :(得分:2)

date()上的手册清楚地说明了它的语法并使用了参数的引号。

由于你的没有,PHP假设你将它们预先定义为constants

Error reporting会引发以下情况:

  

注意:使用未定义的常量Y - 在x行上的/path/to/file.php中假定为'Y'   注意:使用未定义的常量m - 在第x行的/path/to/file.php中假定为'm'   注意:使用未定义的常量d - 在第x行的/path/to/file.php中假定为'd'

示例#4中的示例date()手册格式:

<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>

答案 1 :(得分:1)

您需要在date()

的参数周围加上引号
$date = date('Y-m-d');

你需要用双引号将你赋予$sql的字符串包装起来,否则$date变量不会被扩展。

$sql = "SELECT * FROM boekingen WHERE '$date' BETWEEN date1 AND date2";

What is the difference between single-quoted and double-quoted strings in PHP?

答案 2 :(得分:0)

使用类似的东西

$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE STR_TO_DATE(\'$date'\', \'%m/%d/%Y\') BETWEEN date1 AND date2';

确保date2大于date1。

答案 3 :(得分:0)

date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date" 

这是你问题的代码。

在php中使用字符串的单引号不会扩展变量。

$date周围使用双引号和单引号或连接例如

 $sql = 'SELECT * FROM boekingen WHERE "' . $date .'" 

或sprintf

 $sql = sprintf('SELECT * FROM boekingen WHERE "%s", $date)