Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.041 c
14-1132011027
ronyn
2005-11-15 02:30
2005.12.11
Как установить драйвер?...


14-1132251501
leonidus
2005-11-17 21:18
2005.12.11
Как подсчитать кол-во обращений к сканеру


14-1132674497
Коновалов Ю.С
2005-11-22 18:48
2005.12.11
Сократ киллер


2-1132818133
VadimSpb
2005-11-24 10:42
2005.12.11
Проблема запроса


2-1133160924
RealMan
2005-11-28 09:55
2005.12.11
как добавить примечание при печати TStringGrid