Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Как вычислить кол-во месяцев   Найти похожие ветки 

 
Merko2005 ©   (2006-09-21 07:56) [0]

Использую SQL Server 2000
В табл есть три поля: 1) Дата начала, тип - datetime
                              2) Конечная дата, тип - datetime
                              3) Срок, тип - integer
Как мне так сделать чтоб в поле Срок выводилось количество месяцев, т.е. Срок= Конечная дата - Дата начала?
Использую компоненты DBEdit.
Если не трудно напишите код.

Заранее блягодарен.


 
ЮЮ ©   (2006-09-21 08:02) [1]

Для начала приведи понятие "количество месяцев".
Лучше на пальцах: Сколько месяцев между
 30.01.01 и 31.01.01
 31.01.01 и 01.02.01
 31.01.01 и 28.02.01
 30.01.01 и 01.03.01


 
Merko2005 ©   (2006-09-21 08:11) [2]

0
1
1
2


 
ЮЮ ©   (2006-09-21 08:17) [3]

30.01.01 и 01.03.01 - 2. Я вижу только 1 месяц и несколько дней, которые почему то в (1) образуют 0 месяцкв, а в (2) 1 месяц.

Как видишь, на пальцах не объяснил :)  Давай словами


 
Merko2005 ©   (2006-09-21 08:19) [4]

Хорошо в таком случае можно чтоб вместо месяцев было количество дней так по моему проще


 
ЮЮ ©   (2006-09-21 08:24) [5]

количество дней = Конечная дата - Дата начала
Дата -  это [Дней].[Часть суток] прошедчих от даты X. Поэтому их можно вычитать, прибавлять дни(целая часть) и часы (добная как часть суток)


 
Merko2005 ©   (2006-09-21 08:28) [6]

Формат даты: 01.12.2003
Суть вопроса: У меня не получается отнять дату начала от конечной даты из-за несоответсвия типов данных, т.к. поле Срок типа integer  а те типа datetime


 
ЮЮ ©   (2006-09-21 08:34) [7]


> Формат даты: 01.12.2003


это формат отображения, а не формат хранения

Выполни запрос

SELECT
 StartDate, StopDate, StopDate - StartDate as Interval FROM MyTable

и убедись.
StopDate - StartDate следует привести к целому или округлить


 
Rob_d   (2006-09-21 08:34) [8]

А что, datediff уже отменили?


 
Merko2005 ©   (2006-09-21 08:37) [9]

Ладно что-нибудь придумаю, всем спасибо


 
Павел Калугин   (2006-09-21 10:04) [10]

А справку почитать перед придумыванием?
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™.
Datepart Abbreviations
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms




Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
1-1160554311
kyn66
2006-10-11 12:11
2006.11.19
Сохранение экрана в PNG


1-1160321075
flaxe
2006-10-08 19:24
2006.11.19
Встраивание в другие программы


1-1159873426
Icon
2006-10-03 15:03
2006.11.19
Использование иконок различного размера


15-1162000406
ProV
2006-10-28 05:53
2006.11.19
Можно ли изменить параметр FVisible в привате класса другого юнит


15-1162483189
Slava812
2006-11-02 18:59
2006.11.19
Головоломка