Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выбрать по дате значения от и до...
 
 автор: ols   (19.10.2008 в 14:50)   письмо автору
 
 

В общем нужно сделать выборку от 13 числа этого месяца(включая) до 12 числа следущего месяца
В голову пришло поступить вот так:

<?
//дата  начала отсчета
$d13 =  strftime("%Y-%m-13");
//Прибавляем к месяцу +1
$incr date("m")+1;
//получаем конец отсчета
$d12 strftime("%Y-".$incr."-12");
//формируем sql-запрос
$sql_q "SELECT * FROM account  WHERE id_user = ".$res_srch['id_user']."
AND date >= '
$d13' AND date = '$d12'";
?>


Наверное лучше бы было с BETWEEN использовать условие.
Но проблема в том что если это будет декабрь месяц, то $incr = date("m")+1 примит значение 13, а такого месяца нет.
Как поступить?

  Ответить  
 
 автор: ddhvvn   (19.10.2008 в 15:34)   письмо автору
 
   для: ols   (19.10.2008 в 14:50)
 

если "по-Вашему", то

<?php
$sql_q 
"SELEСT * FROM account WHERE id_user=" $res_srch['id_user'
   . 
"AND date >= DATE(YEAR(NOW)+MONTH(NOW)+INTERVAL 13 DAY)
    AND date < DATE_ADD(YEAR(NOW)+MONTH(NOW)+INTERVAL 13 DAY, INTERVAL 1 MONTH)"
;
?>


Трианон если я не прав, поправит! =))
В MySQL я, к сожалению, не очень силен,а протестить щас не могу!

  Ответить  
 
 автор: ols   (19.10.2008 в 15:44)   письмо автору
 
   для: ddhvvn   (19.10.2008 в 15:34)
 

Запрос неправильный, помогите поправить

  Ответить  
 
 автор: Trianon   (19.10.2008 в 19:19)   письмо автору
 
   для: ddhvvn   (19.10.2008 в 15:34)
 

А что сразу Трианон-то?

WHERE `date` BETWEEN CONCAT(LEFT(CURDATE(),8),'13 00:00:00')
    AND (CONCAT(LEFT(CURDATE(),8),'12 23:59:59') + INTERVAL 1 MONTH)

  Ответить  
 
 автор: ddhvvn   (19.10.2008 в 20:33)   письмо автору
 
   для: Trianon   (19.10.2008 в 19:19)
 

Ну у Вас как всегда элегантно и правильно )))

  Ответить  
 
 автор: Trianon   (19.10.2008 в 20:41)   письмо автору
 
   для: ddhvvn   (19.10.2008 в 20:33)
 

Гы.
Ну вот прямо здесь кондово и топорно. Хотя вроде как работает.

  Ответить  
 
 автор: ddhvvn   (19.10.2008 в 21:20)   письмо автору
 
   для: Trianon   (19.10.2008 в 20:41)
 

-

  Ответить  
 
 автор: BinLaden   (19.10.2008 в 23:24)   письмо автору
 
   для: Trianon   (19.10.2008 в 19:19)
 

Вы мой кумир!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования