Querry, - 1 month

jacob

Registered
Здравейте,
имам база данни, от която искам да изкарам резултати по дата (която е въведена в редовете) от текущата дата до 1 месец назад. Разбрах, че има вариянт с функцията DATEADD, но не ми се получава. Някой може ли да помогне.

Ето докъде съм я докарал:

[sql]
SELECT * FROM table WHERE kolonadata BETWEEN '2011-01-00 00:00:00' AND '2011-02-00 00:00:00'[/sql]

като искам 2011-01-00 00:00:00 да е датата минус 1 месец назад, а 2011-02-00 00:00:00 да е текущата дата.

Предварително благодаря!
 
Ако записваш датата в timestamp тоест с функцията time(); Можеш да направиш заявка към таблицата и да изкараш всичко от тази таблица въведено до момента + 1 месец назад или за какъвто период от време искаш да изкараш данните.

Пример:
60*60 = 1 час (1 минута умножена по 60)
3600*24 = 1 ден (1 час умножен по 24)
(3600*24)*30 = 30 дни (1 час умножен по 24 = 1 ден умножено по 30 = 30 дни)

Тоест заявката ти ще стане
PHP:
SELECT * FROM table WHERE kolonadata BETWEEN '".$timebefore."' AND '".time()."'
Където променливата $timebefore ще е равна на time() - (3600*24)*30
PHP:
$timebefore = time() - (3600*24)*30;
 
Вариянтът на StormBreaker ще ми свърши работа, а имате ли идея как да извежда само първата стойност ( за всеки ден има по няколко) ?
 
[sql]SELECT * FROM таблица WHERE колона_с_дата > CURRENT_DATE - INTERVAL 1 MONTH ORDER BY .... LIMIT 1;[/sql]
На мястото на ... трябва да запишеш критерия. :)
 
jacob каза:
Вариянтът на StormBreaker ще ми свърши работа, а имате ли идея как да извежда само първата стойност ( за всеки ден има по няколко) ?

Вариантът е на adrian точката дай на него. Искаш да изведеш по един файл от всеки ден? Ако е така сложи едно GROUP BY DATE(колона_с_дата) накрая
 
[sql]SELECT * FROM таблица WHERE колона_с_датата > CURRENT_DATE - INTERVAL 1 MONTH GROUP BY date(колона_с_датата)[/sql]

[sql]SELECT * FROM таблица WHERE колона_с_датата > CURRENT_DATE - INTERVAL 1 MONTH GROUP BY day(колона_с_датата)[/sql]

И двете ще ти свършат работа. Просто първото групира резултатите по точна дата. Примерно 2011-02-28

А другото групира само по ден 28, което в твоя случай не би направило проблем, защото връщаш само един месец назад. Но ако връщаш повече от 1 месец задължително трябва да използваш date :)


EDIT: Storm, дублираме си нещо постовете днеска. Вариантът е на документацията на MySQL :) Аз не съм много за точките, защото сега бонус точките ми са 666 и ми харесва числото :)
 

Back
Горе