Главная страница
    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.46 MB
Время: 0.047 c
8-1115787018
carmen
2005-05-11 08:50
2005.12.11
информация о видео файле


3-1130478768
Трегубов Александр
2005-10-28 09:52
2005.12.11
LEFT OUTER JOJN


1-1131626557
BFG9k
2005-11-10 15:42
2005.12.11
Событие клика по переключателю в ListView


1-1131710014
Альф
2005-11-11 14:53
2005.12.11
Извлечение данных из текстовых файлов


14-1132404609
Гость101
2005-11-19 15:50
2005.12.11
Куда написать чтобы закрыли программу





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