Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Последняя дата месяца / 9 сообщений из 9, страница 1 из 1
21.08.2001, 09:58
    #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
21.08.2001, 10:05
    #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
21.08.2001, 10:08
    #32012381
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последняя дата месяца
select dateadd(ss, -1, dateadd(mm, 1, left(convert(varchar(20), getdate(), 120), + '01'))
...
Рейтинг: 0 / 0
21.08.2001, 10:09
    #32012382
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последняя дата месяца
select dateadd(ss, -1, dateadd(mm, 1, left(convert(varchar(20), getdate(), 120), 8 ) + '01'))
...
Рейтинг: 0 / 0
21.08.2001, 10:13
    #32012383
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последняя дата месяца
Даже еще проще
select dateadd(ss, -1, dateadd(mm, 1, convert(varchar(8 ), getdate(), 120) + '01'))
...
Рейтинг: 0 / 0
21.08.2001, 10:50
    #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
21.08.2001, 10:50
    #32012389
Последняя дата месяца
Не знаю как в коде (не программист - руководитель уже), но можно вытаскивать первое число следующего месяца и отнимать один день.
...
Рейтинг: 0 / 0
21.08.2001, 12:37
    #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
22.08.2001, 02:11
    #32012443
Slava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последняя дата месяца
И не думал, что столько ответов будет! Всем большое спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Последняя дата месяца / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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