Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Преобразование формата ;


Страницы:   1 2

SerjKo ©   (2002-10-24 15:06:00) 

Уважаемые господа дело вот в чем:
у меня есть два поля типа DATE (<дата поступления на работу>
и <текущая дата>).
Нужно найти стаж работы.

Я делаю так:
select <текущая дата> - <дата поступления на
работу> from <имя б/д>

Результат получается в днях.

А как получить результат в годах (кроме как <результат>/365)???


sniknik   (2002-10-24 16:47:00) [21]

MsGuns © (24.10.02 16:17) а так получится ?
SELECT EXTRACT(YEAR FROM A.DateLast-A.DateFirst) AS "YEARS_STAG",
EXTRACT(MONTH FROM A.DateLast-A.DateFirst) AS "MONTH_STAG"
FROM MyTable A


(я конечно счас попробую)


MsGuns   (2002-10-24 16:17:00) [22]

Через Local SQL (если исп-ся TQuery из закладки Дельфей BDE) можно так
SELECT (CAST(EXTRACT(YEAR FROM A.DateLast) as INTEGER)*12+
CAST(EXTRACT(MONTH FROM A.DateLast) as INTEGER)) -
(CAST(EXTRACT(YEAR FROM A.DateFirst) as INTEGER)*12+
CAST(EXTRACT(MONTH FROM A.DateFirst) as INTEGER)) as DifByMon,
CAST(CAST(EXTRACT(YEAR FROM A.DateLast) as INTEGER)*12+
CAST(EXTRACT(MONTH FROM A.DateLast) as INTEGER)) -
(CAST(EXTRACT(YEAR FROM A.DateFirst) as INTEGER)*12+
CAST(EXTRACT(MONTH FROM A.DateFirst) as INTEGER))/12 as INTEGER) as DifByYr,
FROM MyTable A


Т.е. разность определяется в кол-ве ПОЛНЫХ годов и ПОЛНЫХ месяцев (правда, на 1 месяц больше или на 2) - для определения стажа вполне подойдет, т.к. там считают годы или месяцы только в первом году (в основном для предоставления первого оплачиваемого отпуска)



SerjKo   (2002-10-24 16:01:00) [23]

Я составляю SQL-запрос и обращаюсь к б/д типа dBase.


Anatoly Podgoretsky   (2002-10-24 15:44:00) [24]

SerjKo (24.10.02 15:06)
Только вот в году не 365 дней, а 365.25 и то приблизительно


sniknik   (2002-10-24 15:32:00) [25]

все тут в основном в дельфях но базы разные, для MSSQL
запрос с использованием
DATEDIFF
Returns the number of date and time boundaries crossed between two specified dates.

Syntax
DATEDIFF ( datepart , startdate , enddate )

Arguments
datepart

Is the parameter that specifies on which part of the date to calculate the difference. The table lists dateparts and abbreviations recognized by Microsoft® SQL Server™.


MsGuns   (2002-10-24 15:19:00) [26]

>SerjKo (24.10.02 15:16)
>Я пишу запрос на Делфях.

... и работаю в ОС Delphi ;)


stone   (2002-10-24 15:19:00) [27]

Не важно в чем ты пишешь запрос, к какому типу БД ты обращаешься?


SerjKo   (2002-10-24 15:16:00) [28]

Я пишу запрос на Делфях.


Val   (2002-10-24 15:10:00) [29]

тип СУБД??


gek   (2002-10-24 15:09:00) [30]

div


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо