比较sql日期和php日期
我正在尝试编写一个sql查询。在英语中,此查询翻译为 选择数据库中购买日期字段小于[日期]的所有记录。 以下是代码形式的查询:比较sql日期和php日期,php,mysql,Php,Mysql,我正在尝试编写一个sql查询。在英语中,此查询翻译为 选择数据库中购买日期字段小于[日期]的所有记录。 以下是代码形式的查询: //php格式 $date=日期(“Y-m-d”); //sql查询 从购买日期的冰箱中选择食物试试以下方法: SELECT * FROM tbl1 WHERE user_id = "User1" and date_purchased < "2016-01-01"; 在某种情况下,这可能如下所示: $date_str = $date->format('Y
//php格式
$date=日期(“Y-m-d”);
//sql查询
从购买日期的冰箱中选择食物试试以下方法:
SELECT * FROM tbl1 WHERE user_id = "User1" and date_purchased < "2016-01-01";
在某种情况下,这可能如下所示:
$date_str = $date->format('Y-m-d');
$sql_pattern = 'SELECT * FROM tbl1 WHERE user_id = "%s" and date_purchased < "%s";';
$sql = sprintf($sql_pattern, $user_name, $date_str);
$date\u str=$date->format('Y-m-d');
$sql_pattern='从tbl1中选择*,其中用户_id=“%s”和购买日期<%s”;
$sql=sprintf($sql\u模式,$user\u名称,$date\u str);
只要记住你提供的信息,一切似乎都很好
我们必须查看整个代码才能找到错误。可能是MySQL字段类型的问题,也可能是您向MySQL发送查询的方式问题
我这里有一个工作示例,其中有一个表的最小版本。我希望有帮助
冰箱表字段:
mysql> desc fridge;
+----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| food | varchar(20) | YES | | NULL | |
| date_purchased | date | YES | | NULL | |
+----------------+------------------+------+-----+---------+----------------+
(注意date\u purchased
字段中的date
类型)
编辑:如果您对该字段使用date
或datetime
类型,则此示例有效
冰箱表内容:
mysql> select * from fridge;
+----+-----------+----------------+
| id | food | date_purchased |
+----+-----------+----------------+
| 1 | hamburger | 2016-04-28 |
| 2 | pizza | 2016-04-12 |
| 3 | salad | 2016-05-10 | <-- future date
| 4 | fruit | 2016-05-04 | <-- future date
+----+-----------+----------------+
mysql>从冰箱中选择*;
+----+-----------+----------------+
|id |食品|购买日期||
+----+-----------+----------------+
|1 |汉堡| 2016-04-28|
|2 |比萨饼| 2016-04-12|
|3 |色拉| 2016-05-10 |我也有类似的问题,我采取了以下步骤来解决:
将SQL字段类型更改为datetime
在php中使用$date=date('Y-m-dh:i:s
);获取当前日期和时间的步骤
将您的查询更新为从date_购买的冰箱中选择食物我遇到了同样的问题,似乎对我有效的是上述内容(PHP代码):
$cur_dt=date('Y-m-d');
$sql=“选择日期,来自rantevou的文本,其中用户\u id='$id';
$result=mysqli\u查询($link,$sql);
如果(mysqli_num_行($result)>0){
while($row=mysqli\u fetch\u assoc($result)){
$date=$row[“date”];
如果($date),您可以添加sql查询和PHP日期格式代码吗?@nanocv请参见上文。为什么会出现这些问题?您是如何看到某些东西没有按预期工作的?
mysql> select * from fridge;
+----+-----------+----------------+
| id | food | date_purchased |
+----+-----------+----------------+
| 1 | hamburger | 2016-04-28 |
| 2 | pizza | 2016-04-12 |
| 3 | salad | 2016-05-10 | <-- future date
| 4 | fruit | 2016-05-04 | <-- future date
+----+-----------+----------------+
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("select food from fridge where date_purchased < ?");
$stmt->bind_param("s", $date);
// set parameters and execute
$date = date("Y-m-d"); // NOTE: $date stores the current date
echo "<p>Food with date < $date</p>";
$stmt->execute();
// bind variables to prepared statement
$stmt->bind_result($food);
// fetch values (here you can do whatever you want with results)
while ($stmt->fetch()) {
echo "<p>$food</p>";
}
$stmt->close();
$conn->close();
$cur_dt = date('Y-m-d');
$sql = "SELECT date, text FROM rantevou WHERE user_id = '$id' ";
$result = mysqli_query($link, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)){
$date = $row["date"];
if ($date <= $cur_dt){
}
}
}