MySQL 两个设定日期之间的当前日期
MySQL current date between 2 set dates
我正在进行的项目需要一些帮助。
有一个 table 有 2 个日期:date1 和 date2(更简单)
现在我需要显示当前日期在日期 1 和日期 2 之间的所有行。
我目前拥有的是:
$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date" BETWEEN date1 AND date2';
但这不起作用。虽然如果我用 2017-01-06 替换 "$date"
它确实有效。现在我该如何解决这个问题?
提前致谢!
date()
上的手册在语法和参数两边使用引号方面都很清楚。
因为你有 none,PHP 假设你将它们预定义为 constants。
Error reporting 会抛出以下内容:
Notice: Use of undefined constant Y - assumed 'Y' in /path/to/file.php on line x
Notice: Use of undefined constant m - assumed 'm' in /path/to/file.php on line x
Notice: Use of undefined constant d - assumed 'd' in /path/to/file.php on line x
示例来自示例 #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)
?>
您需要在 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?
使用这样的东西
$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE STR_TO_DATE(\'$date'\', \'%m/%d/%Y\') BETWEEN date1 AND date2';
确保 date2 大于 date1。
date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date"
这是你问题的代码。
在php中对字符串使用单引号不会扩展变量。
要么在 $date
周围使用双引号和单引号,要么连接 eg
$sql = 'SELECT * FROM boekingen WHERE "' . $date .'"
或sprintf
$sql = sprintf('SELECT * FROM boekingen WHERE "%s", $date)
我正在进行的项目需要一些帮助。 有一个 table 有 2 个日期:date1 和 date2(更简单)
现在我需要显示当前日期在日期 1 和日期 2 之间的所有行。 我目前拥有的是:
$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date" BETWEEN date1 AND date2';
但这不起作用。虽然如果我用 2017-01-06 替换 "$date"
它确实有效。现在我该如何解决这个问题?
提前致谢!
date()
上的手册在语法和参数两边使用引号方面都很清楚。
因为你有 none,PHP 假设你将它们预定义为 constants。
Error reporting 会抛出以下内容:
Notice: Use of undefined constant Y - assumed 'Y' in /path/to/file.php on line x
Notice: Use of undefined constant m - assumed 'm' in /path/to/file.php on line x
Notice: Use of undefined constant d - assumed 'd' in /path/to/file.php on line x
示例来自示例 #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)
?>
您需要在 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?
使用这样的东西
$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE STR_TO_DATE(\'$date'\', \'%m/%d/%Y\') BETWEEN date1 AND date2';
确保 date2 大于 date1。
date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date"
这是你问题的代码。
在php中对字符串使用单引号不会扩展变量。
要么在 $date
周围使用双引号和单引号,要么连接 eg
$sql = 'SELECT * FROM boekingen WHERE "' . $date .'"
或sprintf
$sql = sprintf('SELECT * FROM boekingen WHERE "%s", $date)