本文介绍了在SQL函数(UDF)中查找指定月份的第一天(01)和最后一天(28),作为示例(20091207)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我指定日期时,我需要编写一个SQL函数(UDF)来查找第一天(int)和最后一天(int)。



例如:当我指定(20130217)(即2013年2月17日)时,我应该能够找到第一天(01)最后一天(28)指定的月份(在这种情况下,2月)。



我该怎么做?请提供必要的代码以在我的SQL函数中实现此功能。



谢谢。

I need to write an SQL Function (UDF) to find the First Day (int) and the Last Day (int) when I specify a date.

For example: When I specify (20130217) (i.e. Feb 17th, 2013), I should be able to find the First Day (01) and the Last Day (28) for the specified month (in this case, Feb).

How can I do that? Please provide the necessary code to implement this feature in my SQL Function.

Thanks.

推荐答案

CREATE FUNCTION dbo.LastDayInMonth (@when DATETIME)
RETURNS Int
AS
BEGIN
            Declare @lastDate int
            SELECT @lastdate = DAY(DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DAY(@when),@when))))
            RETURN @lastDate
End





我用Google搜索以省去麻烦



which I googled for to save you the trouble


DECLARE @Date VARCHAR(10)='20120404', @FirstDate VARCHAR(10), @FirstDay INT, @LastDay INT

SELECT @FirstDate=SUBSTRING(@Date,1,6)+'01'

SELECT @FirstDay=1, @LastDay=DATEDIFF(DAY,@FirstDate,DATEADD(MONTH,1,CONVERT(DATETIME,@FirstDate,103)))

SELECT RIGHT('00'+CAST(@FirstDay AS VARCHAR(5)),2) 'FirstDay', RIGHT('00'+CAST(@LastDay AS VARCHAR(5)),2) 'LastDay' 



问候,

GVPrabu


Regards,
GVPrabu


SELECT DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
SELECT DATEADD(DAY, -(DAY(DATEADD(MONTH, 1, GETDATE()))),DATEADD(MONTH, 1, GETDATE()))


这篇关于在SQL函数(UDF)中查找指定月份的第一天(01)和最后一天(28),作为示例(20091207)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 18:04