SQL中datediff函数怎么用?(代码详解)
技术百科
藏色散人
发布时间:2019-03-26
浏览: 次 在sql server中,可以使用t-sql datediff()函数返回两个日期之间的差异。它适用于任何可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式。因此,你也可以得到两次的差值。
本文提供了SQL Server中的DATEDIFF()函数的使用示例。
DATEDIFF()函数语法如下:
DATEDIFF ( datepart , startdate , enddate )
其中datepart是你想要比较的日期的一部分。startdate是第一个日期,enddate是结束日期。
它的工作方式是从enddate中减去startdate。
示例1
下面是一个基本的例子,我们可以算出两个日期之间的天数:
SELECT DATEDIFF(day, '2001-01-01', '2002-01-01') AS Result;
结果:
+----------+ | Result | |----------| | 365 | +----------+
示例2
下面是另一个例子,我声明了两个变量并为它们分配了两个不同的日期(我使用DATEADD()将第一个日期添加1年)。然后使用DATEDIFF()返回该日期的各个dateparts:
DECLARE@date1 datetime2 = '2000-01-01 00:00:00.0000000'; DECLARE @date2 datetime2 = DATEADD(year, 1, @date1); SELECT DATEDIFF( year, @date1, @date2 ) AS Years, DATEDIFF( quarter, @date1, @date2 ) AS Quarters, DATEDIFF( month, @date1, @date2 ) AS Months, DATEDIFF( week, @date1, @date2 ) AS Weeks, DATEDIFF( dayofyear, @date1, @date2 ) AS DayOfYear, DATEDIFF( day, @date1, @date2 ) AS Days;
结果:
+---------+------------+----------+---------+-------------+--------+ | Years | Quarters | Months | Weeks | DayOfYear | Days | |---------+------------+----------+---------+-------------+--------| | 1 | 4 | 12 | 53 | 366 | 366 | +---------+------------+----------+---------+-------------+--------+
示例3
如前所述,你还可以返回日期之间的时间部分。下面是返回日期/时间值之间的小时、分钟和秒数的例子:
DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(hour, 1, @date1);
SELECT
DATEDIFF( hour, @date1, @date2 ) AS Hours,
DATEDIFF( minute, @date1, @date2 ) AS Minutes,
DATEDIFF( second, @date1, @date2 ) AS Seconds;结果:
+---------+-----------+-----------+ | Hours | Minutes | Seconds | |---------+-----------+-----------| | 1 | 60 | 3600 | +---------+-----------+-----------+
示例4
下面是一个获取两个日期/时间值之间的毫秒、微秒和纳秒数的例子:
DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(millisecond, 1, @date1);
SELECT
DATEDIFF( millisecond, @date1, @date2 ) AS Milliseconds,
DATEDIFF( microsecond, @date1, @date2 ) AS Microseconds,
DATEDIFF( nanosecond, @date1, @date2 ) AS Nanoseconds;结果:
+----------------+----------------+---------------+ | Milliseconds | Microseconds | Nanoseconds | |----------------+----------------+---------------| | 1 | 1000 | 1000000 | +----------------+----------------+---------------+
示例5 - Error错误!
如果你尝试做一些极端的事情,比如,返回100年后的纳秒数,你会得到一个错误。这是因为DATEDIFF()返回一个int值,100年内的纳秒数比int数据类型能够处理的纳秒数还要多。
如果你试着这么做会发生什么呢?
DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(year, 100, @date1);
SELECT
DATEDIFF( millisecond, @date1, @date2 ) AS Milliseconds,
DATEDIFF( microsecond, @date1, @date2 ) AS Microseconds,
DATEDIFF( nanosecond, @date1, @date2 ) AS Nanoseconds;结果:
The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.
当然如果你真的必须找出100年内有多少纳秒,那么可以使用DATEDIFF_BIG()函数。这个函数返回一个带符号的bigint数据类型,它允许你返回比DATEDIFF()更大的值。
相关推荐:《MySQL教程》
# 是一个
# 如果你
# 第一个
# 适用于
# 你会
# 可以使用
# 你也
# 两次
# 更大
# 年内
# datediff
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- PHP接收参数值为空怎么办_判断和处理空参数方法说
- Win11怎么解压RAR文件 Win11自带解压功
- 如何在Golang中实现CI/CD流水线自动化测试
- Win11怎么查看局域网电脑_Windows 11
- c++获取当前时间戳_c++ time函数使用详解
- Windows驱动无法加载错误解决方法_驱动签名验
- Win10如何更改任务栏高度_Windows10解
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- Win11如何更新显卡驱动 Win11检查和安装设
- PHP 中如何在函数内持久修改引用变量所指向的目标
- 如何在Golang中引入测试模块_Golang测试
- Win11怎么修复系统文件_使用sfc命令修复Wi
- php怎么连接数据库_MySQL数据库连接的基础代
- C++如何使用std::async进行异步编程?(
- Windows服务持续崩溃怎样修复_系统服务保护机
- Win11文件扩展名怎么显示_Win11查看文件后
- Python字符串处理进阶_切片方法解析【指导】
- phpstudy本地环境mysql忘记密码_重置m
- Golang如何遍历目录文件_Golang fil
- Linux怎么查找死循环进程_Linux系统负载分
- Linux怎么实现内网穿透_Linux安装Frp客
- mac怎么查看wifi密码_MAC查看已连接WiF
- PythonPandas数据分析项目教程_时间序列
- 如何使用Golang实现路由分组管理_Golang
- 如何使用Golang实现云原生应用弹性伸缩_自动应
- 如何用列表一次性对 DataFrame 的指定列应
- php修改数据怎么改富文本_update更新htm
- Win11怎么关闭搜索历史_Win11清除任务栏搜
- Win11怎么设置鼠标宏_Win11鼠标按键自定义
- Python配置文件操作教程_JSONINIYAM
- php本地部署后session无法保存_sessi
- Mac如何查看电池健康百分比_Mac系统信息电源检
- Mac如何设置动态壁纸?(让桌面动起来)
- Win11怎么清理C盘系统日志_Win11清理系统
- Python性能剖析高级教程_cProfileLi
- c++中如何计算坐标系中两点间距离_c++勾股定理
- mac本地php环境如何开启curl_curl扩展
- Win11右键反应慢怎么办 Win11优化右键菜单
- Win11怎么关闭透明效果_Windows11辅助
- WindowsUSB驱动安装异常怎么办_USB驱动
- 如何在Golang中使用log包输出不同级别日志_
- 如何使用Golang搭建本地API测试环境_快速验
- 如何在 Go 中创建包含 map 的 slice(
- 如何将竖排文本文件转换为横排字符串
- VSC怎么配置PHP的Xdebug_远程调试设置步
- Windows如何拦截2345弹窗广告_Windo
- mac怎么打开终端_MAC终端Terminal使用
- c++中如何求一个数的平方根_c++ sqrt函数
- php8.4xdebug无法调试怎么办_php8.
- C++如何获取CPU核心数?(std::threa

@date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(year, 1, @date1);
SELECT
DATEDIFF( year, @date1, @date2 ) AS Years,
DATEDIFF( quarter, @date1, @date2 ) AS Quarters,
DATEDIFF( month, @date1, @date2 ) AS Months,
DATEDIFF( week, @date1, @date2 ) AS Weeks,
DATEDIFF( dayofyear, @date1, @date2 ) AS DayOfYear,
DATEDIFF( day, @date1, @date2 ) AS Days;
QQ客服