Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Разница между датами в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.005 c
1-50051
DiGiTaL
2002-04-27 18:36
2002.05.16
Приложение закрываться не хочет....


14-50107
Olgerd
2002-04-07 19:56
2002.05.16
Хостинг


1-49948
ymin
2002-04-30 16:11
2002.05.16
Запустил программу...


3-49893
TDM
2002-04-21 16:32
2002.05.16
Перебор строк в таблице


1-49981
Riko
2002-04-29 18:24
2002.05.16
Копирование с поврежденного носителя...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский