葡京网投哪个正规 > 新葡亰-数据 > SQL自定义函数返回前一天或后一天日期葡京正网网投:,mssql中获取指定日期所在月份的第一天的代码

原标题:SQL自定义函数返回前一天或后一天日期葡京正网网投:,mssql中获取指定日期所在月份的第一天的代码

浏览次数:83 时间:2020-03-24

在t-sql中用大量的日期操作函数,要看我们怎么去使用了,现在我们介绍了利用sql来实现返回前一天和后一天的日期并输出。

下面两个自定义函数,一个是获取指定的前一天的日期,另外一个是获取指定日期的后一天日期。开发企业内网软件常用,为了更好的的规范和代码维护,Insus.NET常会把一些重复使用的代码,重构为函数。

获取指定日期月份的第一天,你可以使用DATEADD函数,减去指定日期的月份过去了的天数,即可。 复制代码 代码如下: CREATE FUNCTION [dbo].[udf_FirstDayOfMonth] ( @Date DATE ) RETURNS DATETIME AS BEGIN RETURN CAST(DATEADD(day,1 - DAY(@Date), @Date) AS DATETIME) END 或者,用DATEDIFF计算指定日期与日期开始之时,相隔几个月,然后再DATEADD加上这个相隔月份数,从零开始。 复制代码 代码如下: CREATE FUNCTION [dbo].[udf_FirstDayOfMonth] ( @Date DATE ) RETURNS DATETIME AS BEGIN RETURN DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0) END 或者,从指定的日期取出年或月,然后与01组合为日期,即得到指定日期当月天第一天。 复制代码 代码如下: CREATE FUNCTION [dbo].[udf_FirstDayOfMonth] ( @Date DATE ) RETURNS DATETIME AS BEGIN DECLARE @y NVARCHAR(4) = CAST(YEAR(@Date) AS NVARCHAR(4)) DECLARE @m NVARCHAR(2) = CAST(MONTH(@Date) AS NVARCHAR(2)) RETURN CAST((@y + N'-' + @m + N'-01') AS DATETIME) END 或者,参考这篇:// 使用CONVERT函数,指定日期格式来转换,这样也可以获取指定日期所在月份的第一天。 复制代码 代码如下: CREATE FUNCTION [dbo].[udf_FirstDayOfMonth] ( @Date DATE ) RETURNS DATETIME AS BEGIN DECLARE @ym NVARCHAR(10) = CONVERT(varchar(8),GETDATE(),23) RETURN CAST((@ym + N'01') AS DATETIME) END

先来看看常用的日期函数

 

日期函数:

返回前一天:

1,上个月:如上月是201201:(CONVERT([varchar](6),dateadd(month,(-1),getdate()),(112)))2,昨天:2012-02-02 CONVERT(varchar(100), GETDATE() - 1, 23)3,今天:2012-02-03 CONVERT(varchar(100), GETDATE() , 23)4,上月最后一天:2012-01-31 23:59:59.997 dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 5,当月第一天 2012-02-01 00:00:00.000 DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

葡京正网网投 1葡京正网网投 2udf_Yesterday

下面我们来看T-SQL自定义函数返回前一天或后一天日期

-- =============================================
-- Author:        Insus.NET
-- Create date:   2012-03-22
-- Description:   指定日期,返回前一天日期
-- =============================================
CREATE FUNCTION [dbo].[udf_Yesterday](@datetime DATETIME)
RETURNS DATETIME
AS 
BEGIN    
    RETURN  DATEADD(DAY,-1,@datetime)
END
GO

代码如下复制代码 -- =============================================-- Author: Insus.NET-- Create date: 2012-03-22-- Description: 指定日期,返回前一天日期-- =============================================CREATE FUNCTION [dbo].[udf_Yesterday](@datetime DATETIME)RETURNS DATETIMEAS BEGIN RETURN DATEADD(DAY,-1,@datetime)ENDGO

 

返回后一天:

返回后一天:

代码如下复制代码

葡京正网网投 3葡京正网网投 4udf_Tomorrow

-- =============================================-- Author: Insus.NET-- Create date: 2012-03-22-- Description: 指定日期,返回后一天日期-- =============================================CREATE FUNCTION [dbo].[udf_Tomorrow](@datetime DATETIME)RETURNS DATETIMEAS BEGIN RETURN DATEADD(DAY,1,@datetime)ENDGO

-- =============================================
-- Author:        Insus.NET
-- Create date:   2012-03-22
-- Description:   指定日期,返回后一天日期
-- =============================================
CREATE FUNCTION [dbo].[udf_Tomorrow](@datetime DATETIME)
RETURNS DATETIME
AS 
BEGIN    
    RETURN  DATEADD(DAY,1,@datetime)
END
GO

实例

 

代码如下复制代码

Demo:

SELECT [dbo].[udf_Yesterday](CURRENT_TIMESTAMP) AS [Yesterday]SELECT [dbo].[udf_Tomorrow](CURRENT_TIMESTAMP) AS [Tomorrow]

SELECT [dbo].[udf_Yesterday](CURRENT_TIMESTAMP) AS [Yesterday]
SELECT [dbo].[udf_Tomorrow](CURRENT_TIMESTAMP) AS [Tomorrow]

效果

 

注:为了更好的的规范和代码维护,Insus.NET常会把一些重复使用的代码,重构为函数。

Result:

葡京正网网投 5

 

本文由葡京网投哪个正规发布于新葡亰-数据,转载请注明出处:SQL自定义函数返回前一天或后一天日期葡京正网网投:,mssql中获取指定日期所在月份的第一天的代码

关键词:

上一篇:动手实现读写锁,java并发编程

下一篇:评审指南,VI_Mssql系列教程