微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver 日期函数 汇总 11/7

--1给表的日期字段设置认值为当前日期
create table TestDatetime
(
autoId int identity(1,1) primary key,
Uname varchar(50),
Ubirthday datetime
)

--2使用GETDATE()方法获得当前日期
select GETDATE()
print GETDATE()

Print convert(varchar(50),getdate(),105)
print cast(getdate() as varchar(10))

dateadd

print dateadd(day,100,getdate()),
print convert(varchar(50),dateadd(day,200,getdate()),111)

 

--给如日超过1年的员工加薪1000¥

select *
from Employees

update Employees set EmpSalary=EmpSalary+1000
where DATEADD(year,1,EmpInTime)<GETDATE()

 

datediff

--1983年11月22日 与现在getdate()相差多少年/月/日/时/分/秒?
print datediff(year,'1983-11-22',getdate())

print datediff(month,getdate())
print datediff(day,getdate())
print datediff(hour,getdate())
print datediff(minute,getdate())
print datediff(second,getdate())

--获取日期的一部分YEAR(日期),DAY(),MONTH()
--DATEPART

PRINT YEAR(GETDATE())
PRINT MONTH(GETDATE())
PRINT DAY (GETDATE())
print datepart(hour,getdate())
print datepart(minute,getdate())
print datepart(second,getdate())
print datepart(ms,getdate())

 

--输出所有数据中通话时间最长的5条记录
select  top 5*,通话时长=DATEDIFF(second,StartDateTime,EndDateTime)
from CallRecords
order by 通话时长 desc,CallerNumber desc

--输出所有数据中拨打长途号码(对方号码以0开头)的总时长。


select
SUM(DATEDIFF(second,EndDateTime)) as 通话总时长
from CallRecords
where TelNum like '0%'

--4输出本月拨打电话次数最多的前三个呼叫员的编号.group by,count(*)
--本月
select top 3
   CallerNumber as 呼叫员编号,
   COUNT(*) 呼叫次数
from CallRecords

where DATEDIFF(month,GETDATE(),STARTDATETIME)=0

group by CallerNumber
order by 呼叫次数 desc

 

--输出本月通话总时长最多的前三个呼叫员的编号
select
CallerNumber as 呼叫员编号,
SUM(datediff(second,EndDateTime)) as 总通话时长
from CallRecords
where DATEDIFF(month,STARTDATETIME)=0
group by CallerNumber
order by 总通话时长 desc

--按照月份分组

select  datediff(month,getdate()) from CallRecords group by datediff(month,getdate())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐