sql中的日期计算 网上搜集

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

提到SQL中的日期函数与时间函数就不得不说出以下两个概念:确定性函数与非确定性函数。

确定性函数:即获得的值是在一组既定的值中,或者是可以料想到的值。
非确定性函数:即无法准确获知其结果。

下面将日期函数与时间函数按上面提到的这两种类型进行分类说明:

1 . 确定性函数:
[1] DateAdd()
作用:在指定的日期加上一段时间的基础上,返回新的DateTime

语法:
DateAdd(datepart, number, date)

参数:
datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

number
是用来增加datepart的值,如果指定的不是一个整数,则将舍弃此值的小数部分。
例如,如果为datepart指定day,为number指定1.75,则day将增加1。

date
是返回DateTime类型或SmallDateTime值或日期格式字符串的表达式。

返回值类型:
返回DateTime,如果date参数是SmallDateTime,返回SmallDateTime。

示例:
此示例打印出当前时间加上21天,
DateAdd(day, 21, GetDate())
number传负数,大于本月剩余天数的值都是可以的,函数会自己演算。

[2] DateDiff()
作用:
返回跨两个指定日期的日期和时间边界数。

语法:
DateDiff(datepart, startDate, endDate)

参数:
datepart
DateAdd()中以对此参数进行了介绍,这里不再赘述,后面的datepart参数也同。

startDate
是计算的开始日期,startDate是返回DateTime或SmallDateTime值或日期格式字符串的表达式。
因为SmallDateTime只精确到分钟,所以当用SmallDateTime时,秒和毫秒总是0。

endDate
是计算的总是日期。endDate是返回DateTime或SmallDateTime值或日期格式字符串的表达式。

返回值类型:
int

解释:
startDate是从endDate减去。如果startDate比endDate玩,返回负值。
当超出整数值范围,DateDiff产生错误。
对于毫秒,最大数是24天20小时31分钟零23.647秒。
对于秒,最大数是68年。
计算跨分钟、秒和毫秒这些边界的方法,使得DateDiff给出的结果在全部数据类型中是一致的。
结果是带正负号的整数值,其等于跨第一个和第二个日期间的datepart边界值。
例如,在1月4日(星期日)和1月11日(星期日)之间的星期数是1。

示例:
select DateDiff(day, '2009-10-24', GetDate())

[3] Day()
作用:
返回代表指定日期的天的日期部分整数。

语法:
Day(date)

参数:
date
类型为DateTime或SmallDateTime的表达式。

返回值类型:
int

解释:
此函数等价于DatePart(dd, date)

示例:
下面的示例从2009-10-4中返回day部分
select Day('2009-10-4')
会得到4,即日期部分

[4] Month()
作用:
返回代表指定日期月份的整数。

语法:
Month(date)

参数:
date
返回DateTime或SmallDateTime值或日期格式字符串的表达式。

返回值类型:
int

解释:
此函数等价于等价于DatePart(mm, date)

示例:
下面的示例从2009-10-4中返回month部分
select Month('2009-10-4')
会获得10,即月份部分

[5] Year()
作用:
返回表示指定日期中的年份的整数。

语法:
Year(date)

参数:
date
DateTime或SmallDateTime类型的表达式。

返回值类型:
int

解释:
此函数等价于DatePart(yy, date)

示例:
下例从日期2009-10-4中返回年分数
select Year('2009-10-4')
获得2009,即年份部分

2 . 非确定性函数:
[1] DateName()
作用:
返回代表指定日期的制定日期部分的字符串。

语法:
DateName(datepart, date)

参数:
datepart
同DateAdd()

返回值类型:
nvarchar

解释:
SQL Server自动在字符和DateTime值间按需求进行交换,例如,当字符与DateTime值进行比较时。

示例:
此示例从GetDate返回的日期中提取月份名,
select DateName(month, GetDate())
获得October

[2] GetDate()
作用:
按DateTime值的 Microsoft® SQL Server™ 标准内部格式返回当前系统日期和时间。

语法:
GetDate()

返回值类型:
DateTime

解释:
日期函数可以用在select语句的选择列表或用在查询的where子句中,
在设计报表时,GetDate函数可用于在每次生成报表时打印当前日期和时间。
GetDate对于跟踪活动也很有用,诸如在记录事务在某一账户上发生的时间。

示例:
A. 用GetDate返回当前日期和日期和时间
下面的示例得出当前系统日期和时间:
select GetDate()

B. 在create table语句中使用GetDate
下面的示例创建Employees表并用GetDate给出员工雇佣时间的默认值。
use Test
go

create table Employees (

  id int identity(1, 1),
  empName varchar(40) not null,
  createDtm DateTime default GetDate()

)
go

[3] GetUtcDate()
作用:
返回表示当前UTC时间(世界时间坐标或称格林威治标准时间)的DateTime值。
当前的UTC时间得自当前的本地时间和运行SQL Server的计算机操作系统中的设置。

语法:
GetUtcDate()

返回值类型:
DateTime

解释:
GetUtcDate是非确定性函数。引用该列的视图和表达式无法进行索引。
GetUtcDate无法在用户定义的函数内使用。

最后的这个比较特别,它是DatePart()
除了用作DatePart(dw, date)外都具有确定性。
dw是工作日的日期部分。

作用:
返回代表指定日期的指定日期部分的函数。

语法:
DatePart(datepart, date)

参数:
datepart
这里多了个weekday(dw),返回对应于星期中某天的数,
例如,Sunday = 1,Saturday = 7。
weekday日期部分产生的数取决于set datefirst设定的值,此命令设定星期中的第一天。

date
是返回DateTime或SmallDateTime值或日期格式字符串的表达式。

返回值类型:
int

解释:
Day、Month和Year函数分别等价于DatePart(dd, date)、DatePart(mm, date)和DatePart(yy, date)

示例:
GetDate函数返回当前日期,然而,比较时并不总是需要完整的日期信息,通常只是对日期的一部分进行比较。
select DatePart(mm, GetDate()) as 'Month Num'
go
获得10

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
4天前
|
SQL 开发框架 .NET
sql server日期时间函数
sql server日期时间函数
15 2
|
18天前
|
SQL 存储 并行计算
Lindorm Ganos 一条 SQL 计算轨迹
Lindorm Ganos 针对轨迹距离计算场景提供了内置函数 ST_Length_Rows,结合原生时空二级索引和时空聚合计算下推技术,能够高效过滤数据并并行执行运算任务。该方案通过主键索引和时空索引快速过滤数据,并利用多Region并行计算轨迹点距离,适用于车联网等场景。具体步骤包括根据车辆识别代码和时间戳过滤数据、范围过滤轨迹点以及并行计算距离。使用限制包括只支持点类型列聚合运算及表中轨迹点需按顺序排列等。测试结果显示,Lindorm Ganos 在不同数据量下均能实现秒级响应。
18 3
|
2月前
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
74 0
|
2月前
|
SQL 关系型数据库 MySQL
【超全整理】SQL日期与时间函数大汇总会:MySQL与SQL Server双轨对比教学,助你轻松搞定时间数据处理难题!
【8月更文挑战第31天】本文介绍了在不同SQL数据库系统(如MySQL、SQL Server、Oracle)中常用的日期与时间函数,包括DATE、NOW()、EXTRACT()、DATE_ADD()、TIMESTAMPDIFF()及日期格式化等,并提供了具体示例。通过对比这些函数在各系统中的使用方法,帮助开发者更高效地处理日期时间数据,满足多种应用场景需求。
102 0
|
5月前
|
SQL 存储 分布式计算
奇思妙想的SQL|去重Cube计算优化新思路
本文主要分享了作者在蚂蚁集团高管数据链路改造升级过程中,针对去重Cube的优化实践。
793 48
|
2月前
|
SQL 数据挖掘 数据库
SQL计算班级语文平均分:详细步骤与技巧
在数据库管理中,经常需要统计和查询各种汇总信息,如班级某科目的平均分
|
3月前
|
SQL 数据处理
SQL 能力问题之合并两个存在交叉的日期区间,如何解决
SQL 能力问题之合并两个存在交叉的日期区间,如何解决
|
4月前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之odps sql 底层计算框架是MR吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
SQL HIVE
【Hive SQL 每日一题】统计用户连续下单的日期区间
该SQL代码用于统计用户连续下单的日期区间。首先按`user_id`和`order_date`分组并去除重复,然后使用`row_number()`标记行号,并通过`date_sub`与行号计算潜在的连续日期。接着按用户ID和计算后的日期分组,排除连续订单数少于2的情况,最后提取连续下单的起始和结束日期。输出结果展示了用户连续下单的日期范围。
|
5月前
|
SQL 索引
SQL日期函数
SQL日期函数
59 0

热门文章

最新文章