Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать число месяцев  [new]
Led
Member

Откуда: Казань
Сообщений: 14
Как узнать число месяцев имея 2 даты?
Например
2007-11-13 00:00:00 2011-11-13 00:00:00.000 = 48
2008-12-23 00:00:00 2009-12-23 00:00:00.000 = 12
2008-01-01 00:00:00 2008-01-04 00:00:00.000 = 3
20 авг 09, 11:32    [7560527]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
datediff(mm, @d1, @d2)

для спящего время бодрствования равносильно сну
20 авг 09, 11:34    [7560542]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Led
Member

Откуда: Казань
Сообщений: 14
Спасибо!!!!!!!!!!!!!!!
20 авг 09, 11:40    [7560597]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Алексей Бояринцев
Member

Откуда: г. Мытищи
Сообщений: 7
Не очень мне нравится эта функция, т.к.

select datediff (mm, '2009-04-30', '2009-05-01') = 1

и

select datediff (mm, '2009-04-01', '2009-05-31') = 1

Свою функцию писал для разницы месяцев.
21 авг 09, 12:30    [7566129]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Алексей Бояринцев
Не очень мне нравится эта функция, т.к.

select datediff (mm, '2009-04-30', '2009-05-01') = 1

и

select datediff (mm, '2009-04-01', '2009-05-31') = 1

Свою функцию писал для разницы месяцев.

а сколько месяцев между '20070228' '20080228' ?
21 авг 09, 12:59    [7566376]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Алексей Бояринцев
Не очень мне нравится эта функция, т.к.

select datediff (mm, '2009-04-30', '2009-05-01') = 1

и

select datediff (mm, '2009-04-01', '2009-05-31') = 1

Свою функцию писал для разницы месяцев.
Алексей Бояринцев, скажите пожалуйста, какова продолжительность единицы измерения "месяц"?
И почему в Вашем примере Вы ожидаете результат, равный двум, а не единице? Обоснуйте.
Не можете? Чем же тогда функция datediff (mm,...) так уж плоха?
21 авг 09, 14:32    [7567056]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
iap
И почему в Вашем примере Вы ожидаете результат, равный двум, а не единице? Обоснуйте.

Может ему 1.9 нужно
21 авг 09, 15:21    [7567489]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Алексей Бояринцев
Member

Откуда: г. Мытищи
Сообщений: 7
Я не ожидал от select datediff (mm, '2009-04-01', '2009-05-31') = 1.9999

Я ожидал, что datediff (mm, '2009-04-30', '2009-05-01') = 0
и datediff (mm, '2009-04-30', '2009-05-29') = 0,
а datediff (mm, '2009-04-30', '2009-05-30') = 1

Может у меня задача стояла другая.
Мне мужно было, что если разница дат больше 1 месяца - то считать по одному, если больше 2 то по другому и т.д.

С помощью datediff эту задачу решить не получится.
21 авг 09, 15:48    [7567741]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Алексей Бояринцев
Member

Откуда: г. Мытищи
Сообщений: 7
По аналогии с dateadd (mm, 1, '2009-04-30') = '2009-05-30'
Начиная с этой даты значит прошел один месяц и т.д.
21 авг 09, 15:54    [7567795]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
проходящий.
Guest
Алексей Бояринцев
По аналогии с dateadd (mm, 1, '2009-04-30') = '2009-05-30'
Начиная с этой даты значит прошел один месяц и т.д.
И в феврале так же считать?
21 авг 09, 15:55    [7567803]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
Алексей Бояринцев
По аналогии с dateadd (mm, 1, '2009-04-30') = '2009-05-30'
Начиная с этой даты значит прошел один месяц и т.д.

всё по аналогии: 4+1=5, 5-4 = 1. что не так?-))
21 авг 09, 15:59    [7567817]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Алексей Бояринцев
Member

Откуда: г. Мытищи
Сообщений: 7
Думаю, что также.
Обычно интересует сколько полных месяцев прошло между датами (ИМХО).
Кому интересно, что между 30 апреля и 1 мая разница месяцев равна 1?
21 авг 09, 16:00    [7567827]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
проходящий.
Guest
Алексей Бояринцев
Думаю, что также.
Обычно интересует сколько полных месяцев прошло между датами (ИМХО).
Кому интересно, что между 30 апреля и 1 мая разница месяцев равна 1?
Так Вам нужна разница в номерах месяцев?
21 авг 09, 16:01    [7567837]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
простите, но вы путаете тёплое с мягким
21 авг 09, 16:01    [7567839]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
Алексей Бояринцев
Обычно интересует сколько полных месяцев прошло между датами (ИМХО).
Кому интересно, что между 30 апреля и 1 мая разница месяцев равна 1?

Тем, кому интересно: сменился календарный месяц или нет.

А datediff еще в сутках умеет разницу считать... И в часах, и т.д.
21 авг 09, 16:04    [7567864]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать число месяцев  [new]
Алексей Бояринцев
Member

Откуда: г. Мытищи
Сообщений: 7
Думаю, что спор неуместен.

Главное, чтобы datediff отвечала на изначальный вопрос:

Как узнать число месяцев имея 2 даты?
Например
2007-11-13 00:00:00 2011-11-13 00:00:00.000 = 48
2008-12-23 00:00:00 2009-12-23 00:00:00.000 = 12
2008-01-01 00:00:00 2008-01-04 00:00:00.000 = 3

Если устраивает - замечательно.

Флеймить больше не буду.

Всем спс.
21 авг 09, 16:06    [7567875]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить