Работа с датами - PullRequest
       2

Работа с датами

2 голосов
/ 30 апреля 2011

Вот что мне нужно сделать:

  1. Я хочу вставить дату в поле MySQL datetime через 30 дней с текущей даты
  2. Когда я извлекаю эту конкретную запись,Я хочу иметь возможность проверить, прошла ли эта дата еще или нет (то есть срок действия)

Ответы [ 4 ]

4 голосов
/ 30 апреля 2011
INSERT INTO the_table
   (fields, the_date_field)
VALUES
   (?, DATE_ADD(NOW(), INTERVAL 30 DAY))

SELECT
   the_date_field < NOW() AS expired
FROM
   the_table

Подтверждение:

SELECT '2010-01-01' < NOW() AS expired;
+---------+
| expired |
+---------+
|       1 |
+---------+

SELECT '2012-01-01' < NOW() AS expired;
+---------+
| expired |
+---------+
|       0 |
+---------+
1 голос
/ 30 апреля 2011

Для вашей вставки:

$thirty_days_from_today = date('Y-m-d H:i:s', time() + 60*60*24*30);

Проверка срока годности:

if(strtotime($row['expiration_date']) < time()) {
    // expired
}
0 голосов
/ 30 апреля 2011

Поскольку вы используете PHP, вы можете использовать strtotime()

$date = date( 'Y-m-d', strtotime( '+30 days' ) );

strtotime может обрабатывать другие приращения (+1 days, +5 minutes и т. Д.)

Вы также можете использовать strtotime для сравнения дат, когда вы читаете их из базы данных. Если вы сохраняете данные в формате полного дня (без отметки времени), вам нужно разделить их на целые сутки.

$expdate = strtotime( date( 'Y-m-d', $record[ 'expiration_date' ] ) );
$today = strtotime( date( 'Y-m-d' ) );
$isExpired = round( abs( $expiration - $today ) / ( 24 * 60 * 60 ) ) >= 0;
0 голосов
/ 30 апреля 2011

Strtotime - ваш друг в этом вопросе, как для обеспечения того, что вводимые вами данные через данные «понятны» PHP, так и для выполнения математических операций, таких как «+10 дней», которые возвращают дату через десять дней с сегодняшнего дня.,Удивительно, что вы можете бросить в strtotime.

Проверка дат так же проста в запросе MySQL или сравнении PHP с оператором - Like>, <<> и т. Д.

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