簡體   English   中英

比較SQL請求中的兩個日期

[英]Comparing two dates in a SQL request

我是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]列比當前日期差的“短碼”。
我不知道如何獲取當前日期以及結構是否正確。

<?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()

您要使用NOW()而不是DATE()。

可能是您在尋找CURDATE()。

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

采用

NOW()      Returns the current date and time

您應該使用NOW()函數而不是date(),並且需要以合適的格式轉換日期,在此處輸入鏈接說明,您可以訪問此鏈接以轉換日期格式

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

SQL字符串中不包含類似Date() PHP函數。 傳遞值或使用等效的Postgres函數,例如@ pr1nc3已經建議

但是,雖然您沒有公開invalid_from_shortcode的實際數據類型,但不清楚now()是否可以用作等效函數。 它返回timestamp with time zone的當前timestamp with time zone ,該timestamp with time zone當前日期有顯着差異-有效等效於根據當前timezone設置將當前timestamptz截斷為00:00。 您可能需要CURRENT_DATE (與now()::date )。 有關:

另外:與建議的其他兩個答案不同,Postgres中沒有 CURDATE() 這可能會使MySQL與Postgres混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM