Сравнение двух дат в запросе SQL - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в 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] уступает текущей дате.
Я не знаю, как получить текущую дату и правильность структуры.

Ответы [ 6 ]

0 голосов
/ 25 апреля 2018
...
$sql = "SELECT * FROM shortcode WHERE invalid_from_shortcode < Date()"; 
...

Функции PHP, такие как Date(), не отображаются в строке SQL. Либо передайте значение, либо используйте эквивалентную функцию Postgres, например, @ pr1nc3, уже предложенный .

Однако, хотя вы не раскрываете фактический тип данных invalid_from_shortcode, неясно, может ли now() служить эквивалентной функцией. Возвращает текущий timestamp with time zone, который существенно отличается от текущей даты - фактически эквивалентен текущему timestamptz, усеченному до 00:00 в соответствии с текущей настройкой timezone. Вам может понадобиться CURRENT_DATE (аналогично now()::date). Связанный:

В сторону: В отличие от двух других предложенных ответов, в Postgres нет CURDATE(). Это, вероятно, сбивает с толку MySQL с Postgres.

0 голосов
/ 25 апреля 2018

Вы должны использовать функцию NOW () вместо date (), и вам нужно конвертировать дату в подходящий формат введите описание ссылки здесь вы можете перейти по этой ссылке для преобразования формата даты

0 голосов
/ 25 апреля 2018

использование

NOW()      Returns the current date and time
0 голосов
/ 25 апреля 2018

Может быть, вы ищете CURDATE ().

 $sql = "SELECT * FROM shortcode WHERE DATE(invalid_from_shortcode) < CURDATE()";
0 голосов
/ 25 апреля 2018
<?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()

0 голосов
/ 25 апреля 2018

Вы хотите использовать NOW (), а не DATE ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...