powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Последняя дата месяца
9 сообщений из 9, страница 1 из 1
Последняя дата месяца
    #32012378
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мы тут выдумали функцию, которая эту дату возвращает, но оня чуток тормозит весь запрос
CREATE FUNCTION dbo.F_LASTDAYOFMONTH (@DATE D_DATE)
RETURNS D_DATE AS
BEGIN
declare @Date1 D_DATE
select @Date1 = @Date;
while (month(@Date) = month(@Date1)) and (year(@Date) = year(@Date1))
select @Date1 = @Date1 + 1
return @Date1 - 1
END
Не так что бы уж сильно, но все же есть слегка. Никто не знает более быстрого варианта?
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012380
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно чуть цикл уменьшить

CREATE FUNCTION dbo.F_LASTDAYOFMONTH (@DATE D_DATE)
RETURNS D_DATE AS
BEGIN
declare @Date1 D_DATE

if day(@date) < 28
select @Date1 = dateadd(dd, (28 - day(@Date)), @Date);
else
select @Date1 = @date
while (month(@Date) = month(@Date1)) and (year(@Date) = year(@Date1))
select @Date1 = @Date1 + 1
return @Date1 - 1
END
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012381
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select dateadd(ss, -1, dateadd(mm, 1, left(convert(varchar(20), getdate(), 120), + '01'))
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012382
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select dateadd(ss, -1, dateadd(mm, 1, left(convert(varchar(20), getdate(), 120), 8 ) + '01'))
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012383
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже еще проще
select dateadd(ss, -1, dateadd(mm, 1, convert(varchar(8 ), getdate(), 120) + '01'))
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012388
Oleg_O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-- Using UDF
CREATE FUNCTION dbo.LastMonthDay
( @Date datetime )
RETURNS datetime
AS
BEGIN
RETURN (DATEADD(day, -1, CAST(STR(MONTH(@Date)+1) + '/' + STR(01) + '/' +
STR(YEAR(@Date)) AS DateTime)))
END
GO
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012389
Не знаю как в коде (не программист - руководитель уже), но можно вытаскивать первое число следующего месяца и отнимать один день.
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012406
AL_R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
declare @d datetime
select @d = getdate()
--последний день месяца
select dateadd(d, -day(@d), dateadd(m, 1, @d))
--первый день месяца
select dateadd(d, -day(@d) + 1, @d)
...
Рейтинг: 0 / 0
Последняя дата месяца
    #32012443
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И не думал, что столько ответов будет! Всем большое спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Последняя дата месяца
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]