Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
Как попроще получить последний день месяца? У меня получается сильно наворочено. Заранее спасибо за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2002, 07:08 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
select dateadd(month,1,dateadd (day,-1*day(@D),@D)) где @D любая дата нужного Вам месяца Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2002, 07:22 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
А вот если SET @D='2002-03-15', то этот select dateadd(month,1,dateadd (day,-1*day(@D),@D)) неправильный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2002, 14:01 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
select dateadd(dd, -day(@D), dateadd(month, 1, @D)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2002, 14:27 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
Тестируем (SQL Server 2000): declare @D datetime Set @D= '2002-01-29' select dateadd(dd, -day(@D), dateadd(month, 1, @D)) Получаем: 2002-01-30 00:00:00.000 А должно было бы быть 2002-01-31 00:00:00.000 Отсюда вывод: Пусть Ваша программа не помещается в одну строчку, но если она работает правильно - от добра добра не ищут. У меня есть свои UDF, определяющие первый и последний день месяца. CREATE FUNCTION First_Day_Of_Month (@anInputDate datetime) /* Возвращает дату первого дня месяца даты */ RETURNS datetime AS BEGIN RETURN CONVERT(datetime, '01'+SUBSTRING(CONVERT(char(10), @anInputDate, 104), 3, 10), 104) -- А можно и так, но тут время не устанавливается в 0, а берется из @anInputDate -- RETURN dateadd(day, 1-day(@anInputDate), @anInputDate) END CREATE FUNCTION Last_Day_Of_Month (@anInputDate datetime) RETURNS datetime AS /* Возвращает дату последнего дня месяца даты */ BEGIN DECLARE @anOutputDate datetime -- Прибавляем к дате 1 месяц и вычисляем дату первого дня месяца SET @anOutputDate = dbo.First_Day_Of_Month(DATEADD(Month,1,@anInputDate)) -- Вычитаем 1 день RETURN (@anOutputDate -1)--(DATEADD(Day,(-1),@anOutputDate)) END Михаил kasyanov@pilot.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2002, 07:25 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
select dateadd(day,-1,dateadd(month,1,dateadd(day,-day(@D)+1,@D))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2002, 08:38 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
А можно так: declare @D datetime Set @D= '20020201' select dateadd(dd, -1, dateadd(month, 1, convert(char(6),@D,112) + '01')) И вообще, вариантов не счесть и лучшего среди них наверное нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2002, 08:42 |
|
||
|
Получить последний день месяца
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за разнообразие ответов. Да... Каждому свое. Оказывается у меня оказался не очень-то навороченный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2002, 11:40 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32020665&tid=1824311]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 348ms |

| 0 / 0 |
