|
|
|
| В бд даты хранятся в формате date_1="Y-m-d H:i:s" (тип datetime).
Дату из формы получаем в формате $date_2= "d-m-Y"
необходимо выполнить sql-запрос вида
<?
$sql="... WHERE date_1 > ".$date_2;
?>
|
Вернее необходимо его выполнить, так чтобы он корректно работал:)
Проблема заключается в том, чтобы привести даты к одному формату для того, чтобы их можно было сравнить.... | |
|
|
|
|
|
|
|
для: st.Ass
(31.10.2006 в 20:04)
| | как понимаю это можно реализовать при помощи date()
<?
$date_1 = $HTTP_POST_VARS['date_1'];
$date_1 = date(Y-m-d 00:00:00, $date_1);
?>
|
только это не работает:( | |
|
|
|
|
|
|
|
для: st.Ass
(31.10.2006 в 20:13)
| |
<?
$date_1 = date("Y-m-d \0\0\:\0\0\:\0\0", strtotime($HTTP_POST_VARS['date_1']));
....
?>
|
Так тоже не работает:( | |
|
|
|
|
|
|
|
для: st.Ass
(31.10.2006 в 21:07)
| | Попробуйте так:
<?
$date_1 = date("Y-m-d H:i:s", strtotime($HTTP_POST_VARS['date_1']));
....
?>
|
( date_1 - дата из формы ) | |
|
|
|
|
|
|
|
для: kasmanaft
(31.10.2006 в 22:20)
| | хм, вывожу при помощи echo - получаю то, что надо "Y-m-d 00:00:00"
В бд данные хранятся в виде Y-m-d H:i:s (тип - datetime)
Но при выполнении $sql = " ... WHERE date_create > ".$date_1;
получаю - You have an error in your SQL syntax
Может так нельзя сравнивать даты? | |
|
|
|
|
|
|
|
для: st.Ass
(31.10.2006 в 22:50)
| | Можно. Только даты, как и строки, нужно брать в апострофы. | |
|
|
|
|
|
|
|
для: Trianon
(01.11.2006 в 00:00)
| | Хм, не получается | |
|
|
|
|
|
|
|
для: st.Ass
(01.11.2006 в 20:57)
| |
$date_1 = date("'Y-m-d H:i:s'", strtotime($HTTP_POST_VARS['date_1']));
|
| |
|
|
|
|
|
|
|
для: Trianon
(01.11.2006 в 21:12)
| | Структура таблицы
pet | time_create
time_create - это datetime, формат по дефолту в бд - 0000-00-00 00:00:00
форма
<? echo "
<form action=report.php method=post>
<input name=date_1 size=12 value=\"\">"; // если сюда вводим 10-10-2006
echo"
<input type=submit name=report value='ПОЕХАЛИ'>
</form>";
?>
|
обработчик - report.php
<?
$date_1 = $HTTP_POST_VARS['date_1'];
echo $date_1; // Здесь верная дата - 10-10-2006
$date_1 = strtotime("'Y-m-d H:i:s'", $date_1);
echo $date_1; // то здесь получаем "-1"
$query="SELECT * FROM main ";
if(isset($date_1)) $query.=" WHERE time_create >".$date_1; // а здесь соответственно получаем неправильное сравнение
$result = mysql_query($query);
if (!$result) echo die(mysql_error());
$a=mysql_num_rows($result);
?>
......
|
| |
|
|
|
|
|
|
|
для: st.Ass
(05.11.2006 в 11:54)
| |
int strtotime ( string time [, int now] )
Первым параметром функции должна быть строка с датой на английском языке, которая будет
преобразована в метку времени относительно метки времени, переданной в now, или
текущего времени, если аргумент now опущен. В случае ошибки возвращается -1.
|
не $date_1 = strtotime("'Y-m-d H:i:s'", $date_1);
а $date_1 = date("'Y-m-d H:i:s'", strtotime($date_1)); | |
|
|
|
|
|
|
|
для: kasmanaft
(05.11.2006 в 12:28)
| | Теперь год 2016...
<?
$date_1 = $HTTP_POST_VARS['date_1'];
echo $date_1; // Здесь верная дата - 10-10-2006
$date_1 = date("'Y-m-d H:i:s'", strtotime($date_1));
echo $date_1; // здесь получаем '2016-03-28 00:00:00'
$query="SELECT * FROM main ";
if(isset($date_1)) $query.=" WHERE time_create >".$date_1; // а здесь соответственно получаем неправильное сравнение
$result = mysql_query($query);
if (!$result) echo die(mysql_error());
$a=mysql_num_rows($result);
?>
|
| |
|
|
|
|
|
|
|
для: st.Ass
(05.11.2006 в 12:48)
| |
<?
$date_1 = $HTTP_POST_VARS['date_1'];
echo $date_1; // Здесь верная дата - 10-10-2006
$date_1 = strtotime($date_1);
echo $date_1; // Здесь 1459108800
$date_1 = date("'Y-m-d H:i:s'", strtotime($date_1));
echo $date_1; // здесь получаем '2016-03-28 00:00:00'
$query="SELECT * FROM main ";
if(isset($date_1)) $query.=" WHERE time_create >".$date_1; // а здесь соответственно получаем неправильное сравнение
$result = mysql_query($query);
if (!$result) echo die(mysql_error());
$a=mysql_num_rows($result);
?>
|
1459108800 :(
Объясните, пожалуйста, почему не работает данный код. | |
|
|
|
|
|
|
|
для: st.Ass
(05.11.2006 в 15:59)
| |
<?
$date_1 = $HTTP_POST_VARS['date_1']; // получаем данные из формы
echo $date_1; // Здесь верная дата - 10-10-2006
$date_1 = strtotime($date_1);
echo $date_1; // Здесь $date_1 в unixstamp - 1459108800
$query="SELECT * FROM main WHERE UNIX_TIMESTAMP(time_create) > FROM_UNIXTIME($date_1,'%Y-%m-%d %H:%i:%s')"; // здесь сравниваем в unixstamp time_create и $date_1 также в unixstamp
$result= mysql_query($query)
$a=mysql_num_rows($result);
echo $a; // а здесь все равно получаем неправильное значение, причем всегда равному одному и тому же числу...
?>
|
Помогите разобраться - очень надо... Что я неправильно делаю?:( | |
|
|
|
|
|
|
|
для: st.Ass
(12.11.2006 в 00:03)
| |
<?
$date_1 = $HTTP_POST_VARS['date_1']; // получаем данные из формы
echo $date_1; // Здесь верная дата - 10-10-2006
$date_1 = strtotime($date_1);
echo $date_1; // Здесь $date_1 в unixstamp - 1459108800
$query="SELECT * FROM main WHERE UNIX_TIMESTAMP(time_create) > $date_1";
// здесь сравниваем в unixstamp time_create и $date_1 также в unixstamp
$result= mysql_query($query)
$a=mysql_num_rows($result);
echo $a; // а здесь все равно получаем неправильное значение, причем всегда равному одному и тому же числу...
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(12.11.2006 в 00:43)
| | Вот, что странно:
<?
$date_1="01-11-2006";
$date_1=strtotime($date_1); // 1177790400
echo $date_1;
$date_2=date("Y-m-d H:i:s",$date_1); // 2007-04-29 00:00:00
echo $date_2;
?>
|
Как получается 2007-04-29? | |
|
|
|
|
|
|
|
для: st.Ass
(12.11.2006 в 10:47)
| | Это у тебя php какой-то странный ... все работает как надо | |
|
|
|
|
|
|
|
для: kasmanaft
(12.11.2006 в 13:37)
| | Хех:) А вот и нет!!! Проблема в strtotime()
Такой код работает правильно
<?
$time="2004-07-11 11:16:34";
$time=strtotime($time);
echo strftime("%d.%m.%Y %H:%M",$time);
?>
|
А такой нет
<?
$time="11-07-2004 11:16:34";
$time=strtotime($time);
echo strftime("%Y.%m.%d %H:%M",$time);
?>
|
А у меня данные из формы передаются как раз как во втором примере...
Т.о. необходимо $time="11-07-2004 11:16:34" представить как $time="2004-07-11 11:16:34" .
Как это можно сделать? | |
|
|
|
|
|
|
|
для: st.Ass
(13.11.2006 в 21:01)
| | Решил проблему
<?
$time = "17-10-2004";
$day = substr($time,0,2);
$month= substr($time,3,2);
$year = substr($time,6,4);
$time= $year.'-'.$month.'-'.$day;
echo $time; // 2004-10-17
?>
|
| |
|
|
|
|