比较SQL请求中的两个日期

时间:2018-04-25 11:22:01

标签: php postgresql datetime

我是PHP和Javascript的初学者,所以我很难比较SELECT请求中的两个日期:

<?php
require 'db.php';
$sql = "SELECT * FROM shortcode WHERE invalid_from_shortcode < Date()";
$result = pg_query($sql);

if (!$result) {
    echo "Problem with query " . $query . "<br/>";
    echo pg_last_error();
    exit();
}
?>

我正在尝试仅选择[invalid_from_shortcode]列低于当前日期的'shortcodes'。
我不知道如何获取当前日期以及结构是否正确。

6 个答案:

答案 0 :(得分:3)

<?php
  require 'db.php';
  $sql = "SELECT * FROM shortcode WHERE invalid_from_shortcode < NOW()";
    $result = pg_query($sql);
    if (!$result) {
        echo "Problem with query " . $query . "<br/>";
        echo pg_last_error();
        exit();
    }
 ?>

Date()是一个php函数。在Mysql / PostgreSQL中,您必须使用NOW()

答案 1 :(得分:0)

你想使用NOW()而不是DATE()。

答案 2 :(得分:0)

可能您正在寻找CURDATE()。

 $sql = "SELECT * FROM shortcode WHERE DATE(invalid_from_shortcode) < CURDATE()";

答案 3 :(得分:0)

使用

NOW()      Returns the current date and time

答案 4 :(得分:0)

您应该使用NOW()函数而不是date(),并且需要以合适的格式enter link description here转换日期,您可以访问此链接以转换日期格式

答案 5 :(得分:0)

...
$sql = "SELECT * FROM shortcode WHERE invalid_from_shortcode < Date()"; 
...

在SQL字符串中看不到像Date()这样的PHP函数。传递值或使用等效的Postgres函数,如@pr1nc3 already suggested

但是,虽然您没有透露invalid_from_shortcode的实际数据类型,但不清楚now()是否可以作为等效函数。它返回的当前timestamp with time zone与当前日期有显着差异 - 实际上相当于根据当前timestamptz设置截断到00:00的当前timezone。您可能需要CURRENT_DATE(与now()::date相同)。相关:

除此之外:与其他两个答案不同,Postgres中没有 CURDATE() 。这可能会让MySQL与Postgres混淆。