Сравняване на дати

misho

Registered
В БД имам поле тип timestamp, на което съм задал да се записва момента, в който е извършена промяна по съответния запис (ON UPDATE CURRENT_TIMESTAMP). Отделно в php имам една променлива, в която съм записал дата от вида Y-m-d. Въпросте ми всъщност се оказаха два:
1. Как имайки Y-m-d, да взема предния ден?
2. Вече имайки предния ден, как да сравня тази дата с timastamp-а в БД?
 
най лесния вариянт е следния,

трябва да знаеш кой ден е днес $date = date("d");

$befDay = $date -1 вземаш предния ден, и извеждаш от базата данни информацията.
Не забравяй да направиш проверка кой ден е дали е 31 или 30 и кой месец е и ако е февроари след 28 ден да те прехвърля на 1 март дирекно. Надявам се разбра идеята
 
PHP:
$date = "13.12.2011";

$aDayAgo = strtotime("-1 day", strtotime($date)); // UNIX timestamp
$mysqlFormat = strftime("%Y-%m-%d %H:%M:%S", $aDayAgo); // MYSQL TIMESTAMP format

[sql]SELECT .... FROM .... WHERE `timestamp` < '$mysqlFormat'[/sql]

$aDayAgo ти е предния ден. То си проверява кой е предния и връща месеца и/или годината ако трябва. Това да работиш директно с деня и да намаляш ръчно е ужас.

$mysqlFormat ти е датата от предния ден, но във формат за mysql, с който можеш да сравняваш

А можеш и само с SQL да сравниш с предния ден
[sql]SELECT .... FROM .... WHERE `timestamp` < ( NOW() - INTERVAL 1 DAY )[/sql]

( NOW() - INTERVAL 1 DAY ) ти е датата от предния ден
 
StormBreaker каза:
А можеш и само с SQL да сравниш с предния ден
[sql]SELECT .... FROM .... WHERE `timestamp` < ( NOW() - INTERVAL 1 DAY )[/sql]

( NOW() - INTERVAL 1 DAY ) ти е датата от предния ден
Което в конкретния случай май е по-добрия вариант.
Но остана един въпрос.
PHP:
$today = date('Y-m-d');
Как да задам на $yesterday вчерашната дата, но в същия формат?
 
misho каза:
StormBreaker каза:
А можеш и само с SQL да сравниш с предния ден
[sql]SELECT .... FROM .... WHERE `timestamp` < ( NOW() - INTERVAL 1 DAY )[/sql]

( NOW() - INTERVAL 1 DAY ) ти е датата от предния ден
Което в конкретния случай май е по-добрия вариант.
Но остана един въпрос.
PHP:
$today = date('Y-m-d');
Как да задам на $yesterday вчерашната дата, но в същия формат?

$yesterday = strftime("%Y-%m-%d", strtotime("-1 day", strtotime($today)));

иначе в заявката това ( NOW() - INTERVAL 1 DAY ) винаги ще връща вчерашната дата. Няма нужда да му подаваш нищо.
 
Благодаря за поста. След като го прочетох и си реших за нула време проблема, 5 мин. стоях, гледах "умно" и се питах: "-Наистина ли е толкова просто??? И работи!?"
 

Back
Горе