![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование формата ;
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