Forum Webscript.Ru

Общие => Базы данных => Тема начата: Greg от 12 Декабря 2005, 18:25:18

Название: Firebird 1.5 + Дата
Отправлено: Greg от 12 Декабря 2005, 18:25:18
вот такая задача:

select count(*) from table_name where ...

вот после WHERE нужно определить условие, чтобы выделялись даты за сегодняшний день

Пробовал всяко - не выходит

Спасибо всем!
Название: Firebird 1.5 + Дата
Отправлено: Greg от 15 Декабря 2005, 09:04:14
ещё такая фигня получается засовываю в базу дату в формате d.mY

Смотрю в поле - все нормально, в таком виде и хранится, начинаю выводить, получается странная перестановка: m.d.Y

кто знает, как это обойти?

есть конечно вариант такой: обработать строку вывода и переставить элементы... но может дело в другом..?
Название: Firebird 1.5 + Дата
Отправлено: for_i_0 от 19 Декабря 2005, 11:54:51
Цитировать
Greg:
Пробовал всяко - не выходит


Вместо того что бы гадать лучше взгляни в MAN
SELECT count(*) FROM tbl WHERE dt = NOW()

Смотрю в поле - все нормально, в таком виде и хранится, начинаю выводить, получается странная перестановка: m.d.Y

Для твоего случая разработчики MySQL специально придумали поле с форматом DATE(yyyy-mm-dd) пользуйся им.
Название: Firebird 1.5 + Дата
Отправлено: Greg от 19 Декабря 2005, 12:03:25
Цитировать
for_i_0:
Для твоего случая разработчики MySQL

for_i_0
заголовок внимательней прочитай

Цитировать
for_i_0
SELECT count(*) FROM tbl WHERE dt = NOW()

там ещё и время хранится, поэтому не покатит - будет искать только те, что имеют и настоящее время
Название: Firebird 1.5 + Дата
Отправлено: Greg от 26 Декабря 2005, 13:03:33
ну, что? никто ничего не знает?

а у меня ещё такая проблемка: в Interbase никак не хочет работать конструкция INTERVAL для прибавления определенного промежутка времени к существующей дате... ну ни в какую!

Может кто чем поможет?
Название: Firebird 1.5 + Дата
Отправлено: Vladimir D Belousov от 07 Января 2006, 00:14:28
А какой диалект и какой тип поля dt?
Подозреваю (в случае 3-его диалекта и TIMESTAMP), что требуется делать примерно так:

SELECT count(*) FROM atable WHERE CAST(dt AS DATE) = TODAY;
Название: Firebird 1.5 + Дата
Отправлено: Vladimir D Belousov от 07 Января 2006, 00:19:28
И какие проблемы с INTERVAL?
К TIMESTAMP можно прямо прибавлять числа (N, например), где целая часть N - количество дней, а дробная - количесво десятитысячных долей сек. в дне
Название: Firebird 1.5 + Дата
Отправлено: Greg от 11 Января 2006, 08:34:54
Цитировать
И какие проблемы с INTERVAL?
К TIMESTAMP можно прямо прибавлять числа (N, например), где целая часть N - количество дней, а дробная - количесво десятитысячных долей сек. в дне


с этим уже разобрался, но спасибо всё равно

Цитировать
SELECT count(*) FROM atable WHERE CAST(dt AS DATE) = TODAY;


насколько я понял, вместо TODAY подставляем текущую дату, извлекая её средствами PHP. По крайней мере, этот вариант работает
Название: Firebird 1.5 + Дата
Отправлено: ilias1979 от 13 Января 2006, 13:58:55
select count(*) from table_name where date>\'13.01.2006\' and date<\'14.01.2006\'