SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.01.2015 14:21:32

soniclord
Завсегдатай
Зарегистрирован: 21.07.2010
Сообщений: 31

Диапазон даты каждого месяца

Добрый день, уважаемые гуру!

Подскажите пожалуйста как сделать запрос, который бы доставал записи из бд текущего месяца с 25-по 31 числа включительно?
т.е. отчетный период должен идти каждый месяц с 25 по 31 числа, если таких записей нет, то я их добавляю (но там уже все ясно)
p.s. формат даты в бд - datetime

Спасибо заранее!

Неактивен

 

#2 21.01.2015 14:56:22

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Re: Диапазон даты каждого месяца

Может вызов процедуры?
Находим последний день в таблице месяца...
Последний день текущего месяца:

SELECT EXTRACT(DAY FROM LAST_DAY(CURRENT_DATE));

циклом while доставить недостающие значения..

Неактивен

 

#3 21.01.2015 15:10:50

soniclord
Завсегдатай
Зарегистрирован: 21.07.2010
Сообщений: 31

Re: Диапазон даты каждого месяца

я не думаю что при помощи php делать такие вещи разумно.. нет, конечно можно, но не самое эффективно, ИМХО
может быть использовать конструкцию типа

Код:

date_format(real_time, '%Y%m') = date_format(date_add(now(), interval -1 month), '%Y%m');

но, правда я в них не силен

Отредактированно soniclord (21.01.2015 15:14:51)

Неактивен

 

#4 21.01.2015 15:26:49

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Re: Диапазон даты каждого месяца

Я имел в виду хранимую процедуру..
получаем нужные два значения и циклом вставляем недостающие даты.

Неактивен

 

#5 21.01.2015 15:36:56

soniclord
Завсегдатай
Зарегистрирован: 21.07.2010
Сообщений: 31

Re: Диапазон даты каждого месяца

эммм.. извиняюсь, а можно по-подробней?
есть поле datetime, допустим, с записью "2015-01-26 00:00:00" и она должна попасть в запрос по диапазону "%Y-%m-%d" текущего месяца 25-31

Неактивен

 

#6 21.01.2015 15:52:21

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Re: Диапазон даты каждого месяца

Не понял тебя.
у тебя в таблице X есть поле datetime. если эта запись удовлетворяет числу месяца от 25-ого до 31-ого, то куда она должна попасть?

я так понял, у тебя есть таблица X и если в месяце нет с 25-ого по 31-ое число, то ты добавляешь эти числа месяца в эту таблицу?

Неактивен

 

#7 21.01.2015 16:05:09

soniclord
Завсегдатай
Зарегистрирован: 21.07.2010
Сообщений: 31

Re: Диапазон даты каждого месяца

нет, нет!
задача такова - нужно делать отчеты по определенным дням месяца (25-31 день каждого месяца), я сейчас делаю проверку при помощи запроса - если имеются записи данного месяца, в эти дни, то я вывожу одно сообщение, если таковых записей не имеется, делаю другое сообщение. т.е. мне нужно определить - последняя запись определенного пользователя по определенным полям входит ли в этот диапазон данного месяца или нет - вот в чем суть

Неактивен

 

#8 21.01.2015 16:34:07

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Re: Диапазон даты каждого месяца

Так  условие

select  MAX(data_x)  from x where data_x  BETWEEN  '2015-01-25' AND  '2015-01-31'

эта будет последняя запись по времени и добавляй свои условия..

Отредактированно Osi322 (21.01.2015 16:39:58)

Неактивен

 

#9 21.01.2015 16:38:11

soniclord
Завсегдатай
Зарегистрирован: 21.07.2010
Сообщений: 31

Re: Диапазон даты каждого месяца

А как можно избавиться от констант типа года и месяца? Ведь они будут меняться..

Отредактированно soniclord (21.01.2015 16:38:59)

Неактивен

 

#10 21.01.2015 17:20:46

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Re: Диапазон даты каждого месяца

BETWEEN CONCAT( YEAR( CURRENT_DATE ) ,  "-", MONTH( CURRENT_DATE ) ,  "-25" ) AND  LAST_DAY( CURRENT_DATE )
наверно так, но это будет от текущего месяца

Отредактированно Osi322 (21.01.2015 17:21:59)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson