Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Количесво дней в месяце   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.064 c
4-1128934874
Vano85
2005-10-10 13:01
2005.12.11
Мониторинг за файлами


14-1132666500
Еремеев Андрей
2005-11-22 16:35
2005.12.11
Нужна консультация продвинутых


3-1129925027
Sigetta
2005-10-22 00:03
2005.12.11
Курсоры и ADO


5-1116936831
P.N.P.
2005-05-24 16:13
2005.12.11
Как определить, что контрол позволяет накладывать на себя другие


2-1132307783
oleggar
2005-11-18 12:56
2005.12.11
ICQ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский