Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » как посчитать в sql раздницу во времени в колонке DateTime

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

dartvaider



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Существуют 2 колонки DateTime формата: yyyy-MM-dd hh:mm:ss.fff
например 1.01.2005 10:20:30  
на следующий день будит  
2.01.2005 11.20:30
 
Можно ли расчитать SQL запросом раздницу между 2-мя датами ??? и как это сделать?
Раздница между этими датами должна быть расчитана в часах и минутах? Как это сделать плиз хелп мучаюсь уже пол года

Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 16:35 05-09-2005
Dim2004

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dartvaider

Цитата:
2 колонки DateTime формата: yyyy-MM-dd hh:mm:ss.fff  

У полей типа DateTime нет формата.
 

Цитата:
Можно ли расчитать SQL запросом раздницу между 2-мя датами ??? и как это сделать?

select DATEDIFF(minute, dt1, dt2) даёт минуты, разобрать на часы и минуты нет проблем. Если у тебя не работает - подумай, чего не хватает в твоём вопросе .

Всего записей: 222 | Зарегистр. 11-05-2004 | Отправлено: 20:30 05-09-2005
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dartvaider
Мучаешься ты ленью - лень на F1 нажать и в BOL (или  что там посмотреть).
Для дат вычитание есть. А в каком формате выводить хочешь - F1 нажми и посмотри.

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 18:26 06-09-2005
dartvaider



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
бд создана c типом файда Paradox 7.db
в ней имеются 2 поля ata_on,Data_off
Data_on и Data_off имею тип @TimeStamp т.е. полную дату и время 2005.
 
можно ли расчитать раздницу во времени с точностью до минут между 2-мя датами Data_on и Data_off ?
 
т.е.Data_on=6.09.2005 10:00:00  
    Data_off=7.09.2005 11:10:00  
чтобы она выглядила в таком формате?
    Data_summ=25 часов 10 минут?  
 
Если сделать Data_summ числовым форматом, можно высчитывать сколько прошло дней, если формат времени стоит date, тогда в таком случае можно расчитать колличество дней, но колличество часов невозможно? Я встречал форуму для расчета в Excel, но как это можно сделать SQL Запросом можно ли вообще?
 
 
 

Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 19:04 06-09-2005
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dartvaider
А почему бы не создать вычисляемое поле?
Для определения разницы в минутах можно использовать

Цитата:
 
MinutesBetween Routine  
Returns the number of minutes between two specified TDateTime values.  
Unit  
DateUtils  
 

Количество часов и минут прописью - это уже дело техники.
 
Можно, наверное, также написать

Цитата:
 
Data_Off-Data_On
 

А потом полученную разницу преобразовать в строковое представление.

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 10:29 08-09-2005
dartvaider



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Бд создана в Paradox 7 нужно расчитать раздницу между 2-мя точками времени т.е. между начальной точной времени и конечной!
Формат столбца в котором находиться время имеет тип T(Time)
Если сделать 3-ю ячейку для расчета раздницы между 2-мя точками времени, то и поставить в ней такой же формат времени как и первых 2-х, то запросом она не считается почему то ?
Я сделал 3-ю ячейку и поставил в ней формат Number -цифровой формат!
Теперь раздинца между 2-мя тачками времени считаетья вот так:
 
 
1.Раздница во времени
2.Получимое число в результате выполнения запроса.
3.Формат Времени который получается если вставить данные 2.и поменять тип ячейка на время!

-1-           -2-         -3-      
1 час -0,0416666667 1:00:00 Раздница между 1.00.00 и 2.00.00
2 часа -0,0833333333 2:00:00 Раздница между 1.00.00 и 3.00.01
3 часа -0,1250000000 3:00:00 Раздница между 1.00.00 и 4.00.02
 
Если 2.значения т.е. значиния полученные после выполнения запроса (-0,0416666667,-0,0833333333 и т.д.) вставить в Excel поменять знак перед числом на положительный, и поменять тип данных на время, то легко получается то, что нужно т.к. 1.00.00 или 2.00.00
 
Поменять знак - на + запросом не сложно , но как поменять тип данных на тип время???
 
Подмогите плиз кто знает?
 
 
 
 

Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 19:11 12-09-2005
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dartvaider
[Еще раз, специально для ленивых двоечников:
DateField1-Datefield2  
Это и есть разница в дате и времени. А в каком формате выводить - это уже функцией преобразования решается. Есть и специальные функции преобразования. Все есть.
Но если лениво F1 нажать - топай учить уроки. Конкретно - русский язык.
 

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 18:09 15-09-2005
Kitayskiy_svarshik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dartvaider
 
Вопрос:
Если отнять 15 сентября 2005г  от 20 сентября 2005г получиться 5 сентября 0000г ?

Всего записей: 101 | Зарегистр. 09-01-2005 | Отправлено: 18:16 15-09-2005
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kitayskiy_svarshik
Не так. 0 в Date - зависит от создателей. В Делфи например 0= 12/30/1899
MS SQL - 0= 1.01.1753 или 1.01.1900. И т.д. F1 покажет все .
 

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 09:16 16-09-2005
Dim2004

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kitayskiy_svarshik

Цитата:
Если отнять 15 сентября 2005г  от 20 сентября 2005г получиться 5 сентября 0000г

Нет, получится 5 дней .

Всего записей: 222 | Зарегистр. 11-05-2004 | Отправлено: 10:31 16-09-2005
Kitayskiy_svarshik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Нет, получится 5 дней

 
Правильно,  а это не дата а число следовательно:
 
dartvaider

Цитата:
Если сделать 3-ю ячейку для расчета раздницы между 2-мя точками времени, то и поставить в ней такой же формат времени как и первых 2-х, то  

получится чушь.

Всего записей: 101 | Зарегистр. 09-01-2005 | Отправлено: 12:04 16-09-2005
dartvaider



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот как я это сделал в Access
www.deemer.pud.ru/test.mdb
 
SELECT Таблица1.t1, Таблица1.t2, Format([t2]-[t1],"hh:nn:ss") AS Выражение1 INTO [table]
FROM Таблица1;
 
Но стандартный SQL не понимает что тыкое Format ....
 
Kitayskiy_svarshik
да , если создать 3-ю ячейку с таким же типом как и у первых, то получается чушь!
ДЛЯ ЭТОГО Я СОЗДАЛ 3-ю ячейку с числовым форматом, но как преобразовать числовой формат SergeBS
 в формат времени ???
Пока что я делаю Это в отчете с помощью Еxcel - это очень не удобно

Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 12:18 16-09-2005
Kitayskiy_svarshik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
но как преобразовать числовой формат

 
Если тебе нужно кол-во дней.часов.минут.секунд
 
Берёшь целую часть числа, которое у тебя получилось  - это кол-во дней
Берёшь то, что после запятой и умножаешь на 24 - это, кол-во часов
Берёшь то, что после запятой и умножаешь на 24*60 - это , кол-во минут
Принцип ясен?

Всего записей: 101 | Зарегистр. 09-01-2005 | Отправлено: 13:18 16-09-2005 | Исправлено: Kitayskiy_svarshik, 15:53 16-09-2005
dartvaider



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для вычесления колличества днй достаточно просто поставить тип Number в поле где будет расчитываться это колличество и просто отнять DateField1-Datefield2   - это всё работает без проблем!
 
А для вычесления сколько прошло часов с определенного момента до определенного момента не работает
 
ВОТ пример
 
Раздница во времени Получимое число Формат Время
1 час -0,0416666667 01:00 Раздница между 1.00.00 и 2.00.00
2 часа -0,0833333333 02:00 Раздница между 1.00.00 и 3.00.01
3 часа -0,1250000000 03:00 Раздница между 1.00.00 и 4.00.02
 
Kitayskiy_svarshik
ты говориш  Бурёшь то, что после запятой и умножаешь на 24 - это, кол-во часов !
 
в первом случае прошел один час с периода времени от 1.00.00 до 2.00.00
получилось число -0,0416666667 как сделать так что бы с этого чила получилось 1.00.00?
 
Как говориш ты -0,0416666667 *24, ну то, что после запятой *24  , то да получается 19999999992 т.е. 1 час нормально!  Буду ща пробывать в SQL сделать это запросом
 
 
 
 
 
Добавлено:
БОЛЬШОЕ СПАСИБО ВСЁ РАБОТАЕТ!
Kitayskiy_svarshik-у
 
Вот пример запроса :
form1.Query1.SQL.Add('UPDATE "data_onoff.db" Data_onoff SET Data_Prostoya = (Data_on-Data_off)*(-24)*60');
 
 
SergeBS рассказал  ты много, но не по теме .......

Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 15:36 16-09-2005
Kitayskiy_svarshik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dartvaider

Цитата:
БОЛЬШОЕ СПАСИБО ВСЁ РАБОТАЕТ!

Нема за шо.

Всего записей: 101 | Зарегистр. 09-01-2005 | Отправлено: 15:32 17-09-2005
dartvaider



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет есть ща что страдал пол года и только на этом форуме разобрался как и что!

Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 21:27 20-09-2005
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » как посчитать в sql раздницу во времени в колонке DateTime


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru