Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

выборка популярных с условием по дате

56K
24 января 2010 года
зачем мне логин
1 / / 24.01.2010
есть таблица:
Код:
CREATE TABLE `{pref}_music_cats` (
  `cid` int(11) NOT NULL auto_increment,
  `title` varchar(55) NOT NULL,
  `descr` varchar(255) default NULL,
  `dir` varchar(255) NOT NULL,
  `pid` smallint(5) NOT NULL,
  PRIMARY KEY  (`cid`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


CREATE TABLE `{pref}_music_songs` (
  `id` int(11) NOT NULL auto_increment,
  `uid` smallint(3) NOT NULL,
  `cid` smallint(3) NOT NULL,
  `singer` varchar(255) NOT NULL,
  `song` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL,
  `preview` varchar(255) default NULL,
  `date` varchar(255) NOT NULL,
  `loads` smallint(3) NOT NULL,
  `votes` smallint(4) NOT NULL,
  `totalvotes` smallint(4) NOT NULL,
  `comments` smallint(4) NOT NULL,
  `status` int(1) NOT NULL,
  `ip_sender` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


есть запрос:

 
Код:
$result = $db->sql_query("SELECT id, singer, song FROM ".$prefix."_music_songs WHERE status !='0' ORDER BY loads DESC LIMIT ".$limit);


есть вопрос:

как преобразовать запрос к базе, чтобы вывод был с условием за n последних дней. напр. за 7 или за 30?

Заранее благодарю!
439
27 января 2010 года
Rexulnik
217 / / 09.02.2005
есть таблица:
Код:
CREATE TABLE `{pref}_music_cats` (
  `cid` int(11) NOT NULL auto_increment,
  `title` varchar(55) NOT NULL,
  `descr` varchar(255) default NULL,
  `dir` varchar(255) NOT NULL,
  `pid` smallint(5) NOT NULL,
  PRIMARY KEY  (`cid`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


CREATE TABLE `{pref}_music_songs` (
  `id` int(11) NOT NULL auto_increment,
  `uid` smallint(3) NOT NULL,
  `cid` smallint(3) NOT NULL,
  `singer` varchar(255) NOT NULL,
  `song` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL,
  `preview` varchar(255) default NULL,
  `date` varchar(255) NOT NULL,
  `loads` smallint(3) NOT NULL,
  `votes` smallint(4) NOT NULL,
  `totalvotes` smallint(4) NOT NULL,
  `comments` smallint(4) NOT NULL,
  `status` int(1) NOT NULL,
  `ip_sender` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


есть запрос:

 
Код:
$result = $db->sql_query("SELECT id, singer, song FROM ".$prefix."_music_songs WHERE status !='0' ORDER BY loads DESC LIMIT ".$limit);


есть вопрос:

как преобразовать запрос к базе, чтобы вывод был с условием за n последних дней. напр. за 7 или за 30?

Заранее благодарю!



дата в varchar(255)?:-)
это сильно)
сделай её int(4) и записывай туда time()
и там выкусывай:

 
Код:
WHERE `date` >= time() - 2592000
это будет выборка за последние 30 дней
253
27 января 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
дата в varchar(255)?:-)
это сильно)
сделай её int(4) и записывай туда time()


А ещё лучше её сделать DATETIME (тем более что оно и выглядит как человеческая дата) и выбирать простым

 
Код:
SELECT ... WHERE DATE_ADD(date, INTERVAL 1 MONTH);

См. доки MySQL.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог