Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 14:48   #1
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию Нужно посчитать разницу между датой

Здравствуйте. При разработке бд столкнулся с проблемой: есть два поля: date_begin и date_end оба типа datе. Мне нужно подсчитать количество дней между ними(date_end - date_begin). То что так нельзя я уже понял, но как мне реализовать мою задачу, подскажите пожалуйста?
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 14.12.2012, 15:17   #2
Dexes
Пользователь
 
Регистрация: 27.12.2011
Сообщений: 86
По умолчанию

Код:
SELECT date_begin, date_end,
    (TO_DAYS(date_end) - TO_DAYS(date_begin)) as day_interval
FROM table_name
Для MySQL
Dexes вне форума Ответить с цитированием
Старый 14.12.2012, 15:46   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

MS SQL
Код:
CAST(DatOut2-DatIn2 AS int) - округленные дни
CAST(DatOut2-DatIn2 AS numeric(9,3)) - дни с 3 знаками после точки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2012, 20:06   #4
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
MS SQL
Код:
CAST(DatOut2-DatIn2 AS int) - округленные дни
CAST(DatOut2-DatIn2 AS numeric(9,3)) - дни с 3 знаками после точки
Спасибо. Я как раз в ms sql работаю.
Но при попытке преобразования:
Код:
AS SELECT CAST(date_begin AS INT)
FROM
Получаю ошибку
Цитата:
Явное преобразование типа данных date в int не разрешено.
А как сделать не явное преобразование здесь? подскажите пожалуйста.
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 14.12.2012, 20:14   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В #3 вообще-то приведен пример преобразования разницы дат, что вам и нужно. Напрямую дату в int преобразовывать какой смысл? Кстати, возможность такого преобразования вполне может зависить от настроек сервера На данный момент не могу сказать так ли это
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.12.2012 в 20:17.
Аватар вне форума Ответить с цитированием
Старый 14.12.2012, 20:31   #6
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В #3 вообще-то приведен пример преобразования разницы дат, что вам и нужно. Напрямую дату в int преобразовывать какой смысл? Кстати, возможность такого преобразования вполне может зависить от настроек сервера На данный момент не могу сказать так ли это
Я пробовал преобразовать разницу дат :
Код:
AS SELECT CAST((date_end - date_begin) as INT)
FROM
пишет туже оишку что и в начале:
Цитата:
Тип данных операнда date недопустим для оператора subtract.


А какие настройки, можете подсказать пожалуйста?
Просто я уже практически все сделал, осталось с этими датами разобраться.
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 14.12.2012, 20:56   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть еще DATEDIFF(day,date_begin,date_end), забыл совсем
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2012, 21:08   #8
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Есть еще DATEDIFF(day,date_begin,date_end), забыл совсем
Спасибо большое. Все вышло
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти разницу между двумя датами, а результат записать в письменном виде, так чтобы было согласование между падежами KatanaZh Microsoft Office Excel 15 27.11.2012 00:11
отсутствует взаимосвязь между датой поступления товара и датой отгрузки Forget Microsoft Office Access 0 13.02.2011 14:10
Посчитать разницу дат, большая минус меньшая VictorM Microsoft Office Excel 5 10.02.2011 13:12
Обьясните разницу между c и c++ kakawkin C++ Builder 8 05.07.2010 18:32
Посчитать разницу прихода и ухода со склада bikeeva julia Microsoft Office Excel 3 01.05.2009 11:50