Главная страница
    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.036 c
14-1132587549
Yura32
2005-11-21 18:39
2005.12.11
Zvuk


2-1132504798
Seriy
2005-11-20 19:39
2005.12.11
Как Windows запоняет данными буфер, переданный в функцию?


1-1132056378
simpson
2005-11-15 15:06
2005.12.11
ListView.OwnerDraw - не меняется высота Item


2-1132592037
shamen1990
2005-11-21 19:53
2005.12.11
Хелпппппппп!


14-1132302191
pic509
2005-11-18 11:23
2005.12.11
Ограничения в Database Descktop под Delphi ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский