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如何根据当前日期获得上月某一天的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)