Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Разница между датами в Select-е   Найти похожие ветки 

 
Элизабет ©   (2002-04-17 16:42) [0]

В некой табличке есть 2 поля формата даты + еще куча других полей. Мне нужно получить продолжительность = разницу между датами конца и начала. Можно ли это сделать?


 
Johnmen ©   (2002-04-17 16:54) [1]

На уровне приложения - считать обе и получить разницу (которую можно преобразовать в количество мин , сек и т.д.)


 
Johnmen ©   (2002-04-17 16:59) [2]

А вообще-то в Оракуле есть специальная ф-ия !
Изучай доки !


 
Элизабет ©   (2002-04-17 16:59) [3]

А так никак не получится?
Мне бы хотелось еще суммировать длительности, сгруппировать прямо в запросе


 
Wasp ©   (2002-04-17 17:28) [4]

А если просто вычесть одну дату из другой в запросе?
В Paradox"е такое срабатывает. Результат получается в днях. При желании можно перевести во что угодно - минуты, секунды...


 
Johnny Smith ©   (2002-04-17 17:32) [5]

2Wasp
Вообще говоря, в Оракле так и делается...


 
Reindeer Moss Eater   (2002-04-17 17:44) [6]

Разница в днях это легко
Select Trunc(Data1 - Data2)
в часах и минутах немного посложнее, но тоже реально
(substr + to_number)


 
asafr ©   (2002-04-17 17:44) [7]

В MS SQL Server есть функция DATEDIFF... Ну уж в Оракле наверняка есть что-то похожее, а может и по-лучше...


 
Lusha ©   (2002-04-18 10:10) [8]

Добавлю лишь, что дробная часть разницы (если даты содержат время) позволяет вычислить все и часы и минуты и секунды...


 
Элизабет ©   (2002-04-18 12:20) [9]

Ok, попробую так
Спасибо всем за информацию


 
{bas}   (2002-04-18 13:43) [10]

вооще то говоря с датами надо работать внимательно
и лучший способ работы с ним это TRUNC
вот пример:

create TABLE kal(id NNUMBER(10), name VARCHAR2(255), CrDate DATE) Primary key id;
надо выбрать все записи, кот. находятся в диапазоне 10.04.2002 и 18.04.2002

select *
from kal
where crdate >= to_date("10.04.2002", "dd.mm.yyyy")
and crdate <= to_date("18.04.2002", "dd.mm.yyyy")

Если идет как параметр из делфей(TDateTime)(тем более если поле CrDate проиндексировано)

select *
from kal
where crdate >= TRUNC(:BegDate, "dd")
and crdate <= TRUNC(:EndDate, "dd")

если за конкретное число(10.04.2002) и оно идет как параметр из делфей(TDateTime)
то лучше делать так(тем более если поле CrDate проиндексировано)

select *
from kal
where crdate between TRUNC(:inDate, "dd") and (TRUNC(:inDate, "dd")+1)/* (TRUNC(:inDate, "dd")+1) - это передаваемый день плюс 1день*/

TRUNC(to_date("10.04.2002 12:24:22", "d.mm.yyyy hh24:mi:ss"), "dd") <==> "10.04.2002 00:00:00"


 
Элизабет ©   (2002-04-18 14:02) [11]

Согласна, что надо аккуратно. С датами работать приходилось.
А тут столкнулась и со временем :-(Хотя сейчас задача на ходу меняется, придется все-таки обрабатывать в проге - добавилась еще куча всяких разбиений с учетом времени


 
{bas}   (2002-04-18 14:44) [12]

просто тогда делаешь Trunc(,"hh") или Trunc(,"mi") или еще как


 
Элизабет ©   (2002-04-18 15:21) [13]

Ok, все получилось
Всем спасибо!



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-49987
Sirus
2002-04-30 09:53
2002.05.16
Как вычислить количество дней с определенной даты до согедня???


3-49884
phantom2040
2002-04-19 08:26
2002.05.16
Сортировка таблицы DBase


14-50132
Феликс
2002-04-08 16:33
2002.05.16
Кто знает сколько стоит сделать баннер?


1-49960
VVVVV
2002-05-04 19:45
2002.05.16
не работает SelectNext(...);


1-49988
Дмитрий000
2002-04-30 10:07
2002.05.16
Передача параметров в DLL