Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизКоличесво дней в месяце Найти похожие ветки
← →
MakNik (2005-10-26 14:36) [0]Есть поле типа DateTime.
Подскажите, плз., как в запросе получить количество дней в месяце?
← →
MOA © (2005-10-26 14:42) [1]DECLARE @D Datetime, @D1 Datetime
SET @D="20050215"
SET @D1="20040215"
SELECT DATEDIFF(dd, @D, DATEADD(mm,1,@D)), DATEDIFF(dd, @D1, DATEADD(mm,1,@D1))
Удачи!
← →
Fay © (2005-10-26 14:53) [2]2 MOA © (26.10.05 14:42) [1]
Я бы даже сказалuse pubs
go
if object_id("dbo.fn_DaysInMonth") is not null
drop function fn_DaysInMonth
go
create function fn_DaysInMonth(@dt datetime)
returns int
as
begin
declare @dt1 datetime
select @dt = dateadd(dd, 1 - datepart(dd, @dt), @dt)
select @dt1 = dateadd(mm, 1, @dt)
return(datediff(dd, @dt, @dt1))
end
go
select dbo.fn_DaysInMonth(GetDate())
← →
MOA © (2005-10-26 14:57) [3]Ну, если не намёками - то ещё проще ;):
create function fn_DaysInMonth(@D datetime)
returns int
as
begin
return(DATEDIFF(dd, @D, DATEADD(mm,1,@D)))
end
;)
← →
Fay © (2005-10-26 15:01) [4]2 MOA © (26.10.05 14:57) [3]
Ню-ню.
select dbo.fn_DaysInMonth("19000131")
← →
MOA © (2005-10-26 15:07) [5]Согласен.
← →
MakNik (2005-10-26 15:56) [6]Спасибо!
еще один вопросик... чтобы не начинать новую ветку...
Подскажите, плз., как сделать ф-цию аналог EncodeDate(Year, Month, Day)?
← →
Ega23 © (2005-10-26 16:05) [7]YEAR, MONTH и DATE тебе помогут
← →
MakNik (2005-10-26 16:22) [8]сделал так:
CREATE FUNCTION dbo.EncodeDate(@Year int, @Month int, @Day int)
RETURNS DateTime
AS
BEGIN
return( Convert(DateTime, Convert(nvarchar(4),@Year)+"-"+Convert(nvarchar(2),@Month)+"-"+Convert(nvarchar(2),@Day)) )
END
Возможно есть более рациональный способ?
← →
Zz_ (2005-10-26 18:47) [9]>> return( Convert(DateTime,
>>Convert(nvarchar(4),@Year)+"-"+Convert(nvarchar(2),@Month)+"-"+Convert(nvarchar(2),@Day))
>>)END
declare @Y int, @M int, @D int
select @Y = 2005, @M = 1, @D = 11
set dateformat dmy
print Convert(DateTime, Convert(nvarchar(4),@Y)+"-"+Convert(nvarchar(2),@M)+"-"+Convert(nvarchar(2),@D))
print dateadd(dd,@D-1,dateadd(mm,@M-1,dateadd(yy,@Y-1900,0)))
print dateadd(dd,0,convert(varchar, @Y*10000 + @M*100 + @D))
set dateformat mdy
print Convert(DateTime, Convert(nvarchar(4),@Y)+"-"+Convert(nvarchar(2),@M)+"-"+Convert(nvarchar(2),@D))
print dateadd(dd,@D-1,dateadd(mm,@M-1,dateadd(yy,@Y-1900,0)))
print dateadd(dd,0,convert(varchar, @Y*10000 + @M*100 + @D))
← →
Fay © (2005-10-26 19:54) [10]2 MakNik (26.10.05 16:22) [8]
create function dbo.EncodeDate(@Year int, @Month int, @Day int)
returns datetime
as
begin
return(dateadd(d, @Day - 1, dateadd(m, @Month - 1, dateadd(yy, @Year - 1753, "17530101"))))
end
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.04 c