Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как найти интервал между датами?
|
|||
|---|---|---|---|
|
#18+
Мне понадобилось найти количество _целых_ месяцев прошедших между двумя датами. И все, трандец, не знаю че делать. MSSQL 6.5 и просто вычитать из одной даты другую нельзя. Есть функция DATEDIFF которая возвращает количество частей дат (допустим дней или месяцев) между двумя датами. Всегда думал, что эта функция и возвращает количество _целых_ дней, месяцев и т.д. А хрен! declare @db datetime, @de datetime SELECT @db='20010131', @de='20010201' /* 31 января 2001г и 1 февраля 2001г */ SELECT DATEDIFF(mm,@db,@de),@db,@de /* А терь мне надо, получить сколько месяцев прошло (подсказываю, ноль! ) */ результат выполнения: ----------- --------------------------- --------------------------- 1 2001-01-31 00:00:00.000 2001-02-01 00:00:00.000 (1 row(s) affected) В MSSQL 7 этот код работает аналогично, но там есть возможность просто вычитать из одной даты другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 10:41 |
|
||
|
Как найти интервал между датами?
|
|||
|---|---|---|---|
|
#18+
Задача не так проста как кажется с первого взгляда. Можно конечно ориентироваться на день месяца и вычитать 1 из результата если во второй дате день месяца меньше, чем в первой SELECT CASE WHEN DATEPART(dd,@db)>DATEPART(dd,@de) THEN DATEDIFF(mm,@db,@de)-1 ELSE DATEDIFF(mm,@db,@de) END, @db,@de Но что делать с последними днями месяца, например, 31 января 2001г и 28 февраля 2001г. Тут вроде бы должн получиться 1 целый месяц. Тогда надо вводить еще одну проверку на последний день месяца во второй дате и не вычитать 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 11:13 |
|
||
|
Как найти интервал между датами?
|
|||
|---|---|---|---|
|
#18+
SELECT datediff(mm, @db, @de) - CASE WHEN DATEADD(mm, datediff(mm, @db, @de), @db) > @de THEN 1 ELSE 0 END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 11:21 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1825685]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 386ms |

| 0 / 0 |
