sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数

sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数,第1张

drop function dbof_get_workdays

go

CREATE FUNCTION dbof_get_workdays(@bdate DATETIME, @edate DATETIME)

RETURNS INTEGER

AS BEGIN

DECLARE @workdays INTEGER

IF @bdate > @edate

RETURN -1

SELECT @workdays =

--如果终止日期与起始日期在同一个星期内,只需要计算有几天即可

CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN

CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0

WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)

ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END

--如果终止日期与起始日期在不同的星期内

--首先计算出除前后两个星期外完整的星期数 5

ELSE (DATEDIFF(dd,@bdate,@edate)

- (8-DATEPART(dw, @bdate))

- DATEPART(dw, @edate-1)) / 7 5

--再加上第一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)

ELSE 0 END

--加上末一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END

END

RETURN @workdays

END

go

select dbof_get_workdays(dateadd(day,-21,getdate()),getdate())

sql取时间字段中年月日的值的步骤如下:

我们需要准备的材料分别是:电脑、sql查询器。

1、首先,打开sql查询器,连接上相应的sql表。

2、点击“查询”按钮,输入:SELECT date_format(add_time, '%Y') as year, date_format(add_time, '%m') as month, date_format(add_time, '%d') as day FROM test;。

3、点击“运行”按钮,时间字段的年月日就被取出了。

--根据当前时间查询上月26号的日期

SELECT CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,-1,getdate()),23)+'26' , 120)

--根据当前时间查询本月月25号的日期

SELECT CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,0,getdate()),23)+'25' , 120)

GETDATE() 函数从 SQL Server 返回当前的时间和日期。

使用下面的 SELECT 语句:

SELECT GETDATE() AS CurrentDateTime

结果:

CurrentDateTime

2008-12-29 16:25:46635

注释:上面的时间部分精确到毫秒。

例子 2

下面的 SQL 创建带有日期时间列 (OrderDate) 的 "Orders" 表:

CREATE TABLE Orders

(

OrderId int NOT NULL PRIMARY KEY,

ProductName varchar(50) NOT NULL,

OrderDate datetime NOT NULL DEFAULT GETDATE()

)

请注意,OrderDate 把 GETDATE() 规定为默认值。结果是,当您在表中插入新行时,当前日期和时间自动插入列中。

现在,我们希望在 "Orders" 表中插入一条记录:

INSERT INTO Orders (ProductName) VALUES ('Computer')

"Orders" 表将成为这样:

OrderId ProductName OrderDate

1 'Computer' 2008-12-29 16:25:46635

获取Sqlserver 的最小时间是 SqlDateTimeMinValueValue

获取Oracle的最小时间是 OracleDateTimeMinValueValue

另外注意需要引用下面这两个命名空间

using SystemDataSqlTypes;

using SystemDataOracleClient;

在Net Framewrok 中,

DateTimeMinValue = 0001/01/01 00:00:00

SqlDateTimeMinValueValue = 1753/01/01 00:00:00

OracleDateTimeMinValueValue = 0001/01/01 00:00:00

SQL Server 2005 中,

DateTime 最小值 => 1753/01/01 00:00:00

SmallDateTime 最小值 => 1900/01/01 00:00:00

以上就是关于sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数全部的内容,包括:sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数、sql怎么取时间字段的年月日的值、sqlserver如何根据当前日期获得上月某一天的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9553771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存