Дата приращения, дата расчета - PullRequest
0 голосов
/ 13 августа 2011

У меня есть одна конкретная проблема, у меня есть скрипт, который должен выдавать выписку по счету. Теперь я хочу, чтобы срок оплаты счета составлял 14 дней после даты выдачи.

$issue_date = mysql_real_escape_string(trim($_post['issued_date']));
$due_date  = mysql_real_escape_string(trim($_POST['due_date']));
$query = "insert into utility (issue_date, due_date)values(now(),now()+ (60 * 60 * 24 *14)";

Но это не совсем работает. Любая помощь, пожалуйста?

Ответы [ 5 ]

1 голос
/ 13 августа 2011

Ключевым моментом является не смешивать дату и время в Unix.

Если в базе данных есть столбцы даты / даты / времени (в зависимости от NOW()), вы не можете просто добавить секунды, вам нужно DATE_ADD(NOW(), INTERVAL 14 DAY).

Если вы используете метки времени Unix, то вы можете сделать добавление с помощью strtotime('+14 days', $_POST['issued_date']) в PHP или UNIX_TIMESTAMP(DATE_ADD(...)) в MySQL.

1 голос
/ 13 августа 2011

Попробуйте использовать функцию DATE_ADD:

$query = "insert into utility (issue_date, due_date) values (now(),
    DATE_ADD(now(), INTERVAL 14 DAY))";
0 голосов
/ 13 августа 2011

вместо now()+ (60 * 60 * 24 *14) используйте adddate(now(), interval 14 day). И вам не хватает закрытия ) в вашем запросе!

0 голосов
/ 13 августа 2011

В вашем коде две вещи не так.

  1. Переменные в PHP чувствительны к регистру.Значение $ _ post отличается от $ _ POST .

  2. , когда вы умножаете время на секунды, минуты, часы и т. Д., он не рассчитывается, потому что умножение интерпретируется как часть строки.

0 голосов
/ 13 августа 2011

что означает «срок оплаты счета должен составлять 14»?

Также вы оцениваете now () дважды - следовательно, получаете два значения.

...