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

Вниз

Как подсчитать количество месяцев между Дата1 и Дата2   Найти похожие ветки 

 
Kostya_iz_angren   (2003-02-27 13:39) [0]

Как подсчитать количество целое число месяцев между Дата1 и Дата2 посредством SQL?
Например:
1) между 01.01.2002 и 31.03.2002 - 3 месяца
2) между 01.01.2002 и 01.04.2002 - 4 месяца
Это нужно для расчёта износа основных средств.


 
Anatoly Podgoretsky   (2003-02-27 13:42) [1]

Сколько дней в месяце


 
ermserg   (2003-02-27 13:50) [2]

DATEDIFF


 
Kostya_iz_angren   (2003-02-28 10:03) [3]

ermserg>
Эта функция будет работать в IBase? Если да, то с примером пожалуйста, или если есть справочник по IBase командам.
Буду благодарен!!!


 
ermserg   (2003-02-28 11:08) [4]

V MSSQL est. IBase v voprose ne bilo.
U tebya knopka F1 est? Nu tak posmotri.


 
Kostya_iz_angren   (2003-02-28 11:21) [5]

ermserg>
Ну и на том, спасибо :(


 
kaif   (2003-02-28 13:35) [6]

ИМХО...
Все же лучше почитать серьезную литературу сначала про то, как принято начислять амортизацию и задать пару нелицеприятных вопросов заказчику на этот счет. Я знаю, что бухгалтера во всем мире (не знаю, как у нас...) прибегают к определенным условностям в этом вопросе. Например, считается, что в любом месяце 30 дней, к примеру или еще как-то. Но ни один бухгалтер в мире (не знаю, как у нас...) не будет усложнять этот вопрос и вводить всевозможные нелинейности в линейную амортизацию. Нужно понимать, что амортизация есть весьма условное начисление и способ этого начисления может и должен регулироваться учетной политикой, а не извратами программирования.


 
Johnmen   (2003-02-28 13:51) [7]

> 1) между 01.01.2002 и 31.03.2002 - 3 месяца

А между 31.01.2002 и 1.02.2002 ?
:))))


 
ermserg   (2003-02-28 14:09) [8]

to Johnmen:
MSSQL2000 pokazivayet 1.


 
Johnmen   (2003-02-28 14:15) [9]

>ermserg © (28.02.03 14:09)

Вполне логично, что 02-01=1
Только я бы сказал, что один день :)
Или между 31.01.2002 23:59:59 и 1.02.2002 00:00:00 ? Неужели целый месяц ? ;-)


 
Kostya_iz_angren   (2003-02-28 14:29) [10]

Допустим, даже разница будет 1 сек, 1 млсек. В результате мы залезли в другой месяц, а значит, принимаем за месяц. Это тоже условности...
Данную задачу реализовал без SQL, работает, но выглядит не очень эстетично, а по этой причине решил, что через SQL будет компактней, красивше то бишь...
Про функции в MSSQL (DATEDIFF) мне известно, но есть аналог для IBase, вот в чём вопрос.
Кто знает что либо, было хорошо узнать об этом и другим.


 
ermserg   (2003-02-28 14:31) [11]

to Johnmen ©
SQL-92 (a mozhet ranniy) opredelyayet tip dannih INTERVAL. DATEDIFF(chast_intervala, date1, date2) vozvraschayet chast intervala opredelyayemuyu pervim parametrom. Eto mozhet bit year, month, week, day, hour i t.d.


 
ermserg   (2003-02-28 14:44) [12]

to Kostya_iz_angren:
a etot vopros luchshe visimo zadat v InterBase forume.


 
Smashich   (2003-02-28 14:47) [13]

2Kostya_iz_angren (28.02.03 14:29)

аналог для IB еализуется через UDF


 
spogi   (2003-02-28 15:01) [14]

mogu dat xoroshiy sovet!
konechno luchshe knig prochitat, no vse taki:
est takaya funksiya DECODER napr.

DecodeDate(Year1, Month1, Day1, StrToDate(Edit1.Text));
DecodeDate(Year2, Month2, Day2, StrToDate(Edit2.Text));

Kak ti ponyal edit1 i edit2 soderjat dati...
a potom Month2-Month1 = to chto ti xocesh...


 
ZeroDivide   (2003-02-28 15:18) [15]

PL/SQL
Round((Data1 - Data2)/30)

30 Потому что для бугалтерских расчетов стандарт - 30 дней в месяце.


 
Higs   (2003-03-01 21:22) [16]

Для расчета амортизации фиолетово, сколько дней в месяце: начисление идет целиком за месяц, а не по дням! Поэтому то, что сказал spogi, и есть то, что нужно!


 
kaif   (2003-03-01 23:27) [17]

Так все же зачем вычислять эту разницу?
Если амортизация систематически начисляется каждый месяц, так и начисляйте фиксированную величину каждый месяц (скажем, в последнюю пятницу месяца). А если она начисляется за некий период в произвольный момент, то пусть уж лучше тогда будет пропорциональна величине
ПН*K*(date1-date2)/365.25
где ПН - первоначальная стоимость, К-коэффициент амортизации (равен 1/10, если период полной амортизации для данной позиции 10лет, к примеру).
А вообще нормальные челы по-моему начисляют амортизацию раз в год...



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

Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
3-63936
San
2003-03-03 15:50
2003.03.20
установка БД


3-63924
Diplomnik
2003-02-27 10:39
2003.03.20
Помогите с DBLookUpComboBox!!!


14-64384
Igel
2003-03-05 13:38
2003.03.20
Компоненты для просмотра SLB-файлов.


14-64298
Думкин
2003-03-01 06:21
2003.03.20
Матан однако


1-64153
Димон1
2003-03-07 13:43
2003.03.20
TreeView OnMouseWheel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский