Форум: "Базы";
Текущий архив: 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