[英]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中沒有
。 這可能會使MySQL與Postgres混淆。 CURDATE()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.