Mysql и работа со временем

Armageddance

Новичок
Подскажите, как проще, лучше и правильнее организовать базу данных Mysql, где потребуется очень часто делать выборки по часам, дням и месяцам, производить записи на временной промежуток в будущем, расчитывать будний или выходной день, сколько дней в текущем месяце и т.д. и т.п. и т.д.
Использовать возможности mysql, самому писать скрипт полностью на php для работы со временем или может какой класс существует подходящий?
 

Armageddance

Новичок
Помогите разобраться что к чему.

PHP:
	$i=2700;
	$start[0]=mktime(9, 0, 0, date("m"), date("d"), date("Y"));
	$start[1]=$start[0]+$i;
	$start[2]=$start[1]+$i;
	$start[3]=$start[2]+$i;
	$start[4]=$start[3]+$i;
	$start[5]=$start[4]+$i;
	$start[6]=$start[5]+$i;
	$start[7]=$start[6]+$i;
	$start[8]=$start[7]+$i;
	$action=$_REQUEST['action'];
	if($action=="create_session_today_action")
		{
			$query="INSERT INTO sessions (timer) VALUES ('$start[0]'),('$start[1]'),('$start[2]'),('$start[3]'),('$start[4]'),('$start[5]'),('$start[6]'),('$start[7]'),('$start[8]')";
			$query=mysql_query($query);
			echo mysql_error();
			header("Location: index.php");
		}
вписываю в базу в поле DATETIME (ИЛИ TIMESTAMP - пробовал менять, все тоже самое)
В базе получаю из 9-ти ячеек две с датой аж за 2013 год, остальные вовсе все нули.
Что не так делаю?
 

KorP

Новичок
а не пробовал сначала наладить правильное присвоение значений, т.е. получать правильную дату в каждой переменной, а уже потом это дело в базу запихивать? вот подумай над тем какие значения у тебя переменные 1-8 будут иметь
 

Armageddance

Новичок
Собственно, столкнулся с проблемой синтаксиса в множественных операторах в PHP-MYSQL, запрос непосредственно в MYSQL отлично работает, а изнутри php выдает ошибку синтаксиса MYSQL.
Код
PHP:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT @session1:= DATE_ADD(@date, INTERVAL '45:0' MINUTE_SECOND);
Подозреваю, что проблема в оканчивающихся на ; выражениях MYSQL, которые интерпретатор php расценивает как окончание запроса. Можно конечно использовать множество переменных для запросов из Php, но тогда код превратиться в некрасивую неудобную кучу. Кто как посоветует решить проблему?
PHP:
$action=$_REQUEST['action'];
    if($action=="create_session_today_action")
        {
            $query="SELECT @date:= CAST(CONCAT(CAST(YEAR(NOW()) AS CHAR), '-', CAST(MONTH(NOW()) AS CHAR), '-', CAST(DAYOFMONTH(NOW()) AS CHAR), ' ', '09:00:00') AS DATETIME);
            SELECT @session1:= DATE_ADD(@date, INTERVAL '45:0' MINUTE_SECOND);
            SELECT @session2:= DATE_ADD(@date, INTERVAL '90:0' MINUTE_SECOND);
            SELECT @session3:= DATE_ADD(@date, INTERVAL '135:0' MINUTE_SECOND);
            SELECT @session4:= DATE_ADD(@date, INTERVAL '180:0' MINUTE_SECOND);
            SELECT @session5:= DATE_ADD(@date, INTERVAL '225:0' MINUTE_SECOND);
            SELECT @session6:= DATE_ADD(@date, INTERVAL '270:0' MINUTE_SECOND);
            SELECT @session7:= DATE_ADD(@date, INTERVAL '315:0' MINUTE_SECOND);
            SELECT @session8:= DATE_ADD(@date, INTERVAL '360:0' MINUTE_SECOND);
            SELECT @session9:= DATE_ADD(@date, INTERVAL '415:0' MINUTE_SECOND);
            SELECT @session10:= DATE_ADD(@date, INTERVAL '450:0' MINUTE_SECOND);
            SELECT @session11:= DATE_ADD(@date, INTERVAL '495:0' MINUTE_SECOND);
            INSERT INTO sessions (timer) VALUES(@session1),(@session2),(@session3), (@session4), (@session5), (@session6),(@session7), (@session8), (@session9), (@session10), (@session11)";
            $query=mysql_query($query);
            echo mysql_error();
            header("Location: index.php");
        }
 

Armageddance

Новичок
Вопрос решен. Mysql_query() выполняет только один запрос к базе. Пришлось разбить на множество запросов.
 
Сверху