Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.048 c
11-1139146742
Ganda1f
2006-02-05 16:39
2006.11.19
STL для дельфи (тестируем)


1-1160312498
Sanya_BBB
2006-10-08 17:01
2006.11.19
Передача фокуса и курсора при нажатии на Tab


2-1162203378
Access
2006-10-30 13:16
2006.11.19
Acces, ADO - как получить структуру таблицы?


6-1151431213
anton773
2006-06-27 22:00
2006.11.19
докачка файлов


1-1160398467
CDfdfgf
2006-10-09 16:54
2006.11.19
Tms "xlsadapter" - что это?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский