当前位置: 首页 > news >正文

SQL SERVER取时间书写方法大全

目录

(一)前言

(二)Convert函数知识

1. 定义和用法

2. 语法

3.  可以使用的 style 值

4. 实例

(三)时间函数

1. 前提

2. 常用时间函数

(1)格式

(2)实例

(四)一些特殊例子

1. 当天的0点0分0秒,当天的23点59分59秒

(1)第一种写法

(2)第二种写法

2. 当前时间所在的周一0点0分0秒 当前时间所在的周日23点59分59秒

 3. 当前时间所在的月初0点0分0秒 当前时间所在的月末23点59分59秒

4. 当前时间所在的年初0点0分0秒 当前时间所在的年尾23点59分59秒

5. 取上一个小时的初始整点


(一)前言

在SQL的过滤条件中合理地使用时间格式,这在我们日常工作是很常见的。所以本文我整理了以SQL SERVER为使用版本的一些经典的时间取法的书写方式。

(二)Convert函数知识

1. 定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

2. 语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

3.  可以使用的 style 值

Style IDStyle 格式
100 或者 0mon dd yyyy hh:miAM (或者 PM)
101mm/dd/yy
102yy.mm.dd
103dd/mm/yy
104dd.mm.yy
105dd-mm-yy
106dd mon yy
107Mon dd, yy
108hh:mm:ss
109 或者 9mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110mm-dd-yy
111yy/mm/dd
112yymmdd
113 或者 13dd mon yyyy hh:mm:ss:mmm(24h)
114hh:mi:ss:mmm(24h)
120 或者 20yyyy-mm-dd hh:mi:ss(24h)
121 或者 21yyyy-mm-dd hh:mi:ss.mmm(24h)
126yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130dd mon yyyy hh:mi:ss:mmmAM
131dd/mm/yy hh:mi:ss:mmmAM

4. 实例

select CONVERT(varchar, getdate(), 120 )  --返回 2022-10-30 00:04:28select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --返回 20221030000446select CONVERT(varchar(12) , getdate(), 111 )  --返回 2022/10/30select CONVERT(varchar(12) , getdate(), 112 )  --返回 20221030select CONVERT(varchar(12) , getdate(), 102 )  --返回 2022.10.30select CONVERT(varchar(12) , getdate(), 101 )  --返回 10/30/2022select CONVERT(varchar(12) , getdate(), 103 )  --返回 30/10/2022select CONVERT(varchar(12) , getdate(), 104 )  --返回 30.10.2022select CONVERT(varchar(12) , getdate(), 105 )  --返回 30-10-2022select CONVERT(varchar(12) , getdate(), 106 )  --返回 30 10 2022select CONVERT(varchar(12) , getdate(), 107 )  --返回 10 30, 2022select CONVERT(varchar(12) , getdate(), 108 )  --返回 00:07:14select CONVERT(varchar(12) , getdate(), 109 )  --返回 10 30 2022 1  select CONVERT(varchar(12) , getdate(), 110 )  --返回 10-30-2022select CONVERT(varchar(12) , getdate(), 113 )  --返回 30 10 2022 0select CONVERT(varchar(12) , getdate(), 114 )  --返回 00:09:00:440

(三)时间函数

1. 前提

我们将使用 GETDATE() 函数来获得当前的日期/时间

select getdate();

2. 常用时间函数

(1)格式

函数参数/功能
GetDate( )返回系统目前的日期与时间
DateDiff (interval,date1,date2)以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date)以interval指定的方式,加上number之后的日期
DatePart (interval,date)返回日期date中,interval指定部分所对应的整数值
DateName (interval,date)返回日期date中,interval指定部分所对应的字符串名称

缩 写(Sql Server)Access 和 ASP说明
YearYyyyyy年 1753 ~ 9999
QuarterQq季 1 ~ 4
MonthMm月1 ~ 12
Day of yearDyy一年的日数,一年中的第几日 1-366
DayDd日,1-31
WeekdayDww一周的日数,一周中的第几日 1-7
WeekWkww周,一年中的第几周 0 ~ 51
HourHh时0 ~ 23
MinuteMi分钟0 ~ 59
SecondSss秒 0 ~ 59
MillisecondMs-毫秒 0 ~ 999

(2)实例

--dateadd 原有时间加: 2022-02-17 13:20:16 此时间加12个月 select dateadd(MONTH,12,'2022-02-17 13:20:16')  --返回:2023-02-17 13:20:16.000  (参数month可以改为 day,year等日期加相应的值)--datediff 两个时间的差 (后面-前面=返回值)select datediff(day,'2022-02-01','2022-02-18')   --返回:17  (参数day可以改为 month,year等日期加相应的值)--datepart 获取日期的某个部分整数select DATEPART(month, '2022-2-17')  --返回 2    (参数month可以改为 day,year等日期加相应的值)--datename 获取指定部位的字符串select datename(weekday, '2022-2-17')  --返回 星期日 (参数weekday可以改为 day,year等日期加相应的值)--day(), month(),year() 获取指定部位的字符串select day('2022-2-15') --返回15

(四)一些特殊例子

1. 当天的0点0分0秒,当天的23点59分59秒

(1)第一种写法

select convert(
datetime
,convert(varchar(10),getdate(),120)) as a,DATEADD(SS,-1,DATEADD(DD,1,CONVERT(DATETIME,CONVERT(VARCHAR(10),GETDATE(),120)))) as b

(2)第二种写法

SELECT cast(convert(char(10),getdate(),120)+' 00:00:00' as
datetime)--取0点

 

SELECT cast(convert(char(10),getdate(),120)+' 23:59:59' as datetime)--取24点

2. 当前时间所在的周一0点0分0秒 当前时间所在的周日23点59分59秒

select DATEADD(wk,DATEDIFF(wk,0,getdate()),0) as a ,DATEADD(day,6,DATEADD(wk,DATEDIFF(wk,0,getdate()),0)) as b,DATEADD(SS,-1,DATEADD(DD,1,CONVERT(DATETIME,CONVERT(VARCHAR(10),DATEADD(day,6,DATEADD(wk,DATEDIFF(wk,0,getdate()),0)),120)))) as c

 3. 当前时间所在的月初0点0分0秒 当前时间所在的月末23点59分59秒

select dateadd(month, datediff(month, 0, getdate()), 0) as a ,dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1) as b,DATEADD(SS,-1,DATEADD(DD,1,CONVERT(DATETIME,CONVERT(VARCHAR(10),dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1),120)))) as c

4. 当前时间所在的年初0点0分0秒 当前时间所在的年尾23点59分59秒

select dateadd(year,datediff(year,0,getdate()),0) as a ,dateadd(year,datediff(year,-1,getdate()),-1) as b,DATEADD(SS,-1,DATEADD(DD,1,CONVERT(DATETIME,CONVERT(VARCHAR(10),dateadd(year,datediff(year,-1,getdate()),-1),120)))) as c

5. 取上一个小时的初始整点

即假如现在是下午18:30,那我们要取的是 17:00。

select  convert(datetime,convert(VARCHAR(13),DATEADD(hour,-1,GETDATE()),120) + ':00:00.000') as a;


 

http://www.xdnf.cn/news/820315.html

相关文章:

  • 10大常见网络安全攻击手段及防御方法总结
  • 国内三大PTPrivate Tracker站分析
  • AUTOIT教程
  • 计算机体系结构:编译器预取例题(优化前后失效次数计算)
  • 配置pcanywhere来远程管理服务器
  • 图的定义和各种术语总结
  • 关于Recycle.exe病毒的分析
  • activeti user guide 中文_Cool Edit Pro 2.1 简体中文版
  • WinUSB - 微软为所有 USB 设备提供的常规驱动程序
  • WOW装备大全(07.11.30)
  • Ant Design Pro V4下载运行
  • 跨站脚本执行漏洞详解
  • ISO7816nbsp;传输协议nbsp;T0nbsp;T1
  • ByteBuffer的allocate和allocateDirect区别
  • Keil微库 vs 标准C库
  • 42丨深度学习:使用GAN生成手写数字样本
  • RubyOnRails终极部署
  • 开源.net框架的CMS
  • 网页设计零基础教程:快速掌握制作技巧
  • 黑莓手机刷linux,【教程】黑莓手机 BlackBerry DM6.0 完整刷机教程 含瘦身方法...
  • 看懂影片标题,各种电影视频格式标题的含义
  • 语音编程之Speech SDK概述(1)
  • PLSQL专项学习之SYS_CONTEXT
  • 【转】OrCAD 16.3安装和破解方法
  • 第五届管理科学与工程管理国际学术会议 2024 5th International Conference on Management Science and Engineering Manage
  • 电脑桌面图标变大了怎么恢复?5种简单方法帮你恢复正常
  • 不得不知的3个现货白银的基本规则!第3个很多人都忽略了
  • PKI/CA与数字证书学习笔记
  • c语言编程题经典100例
  • SmartUpload组件实现文件上传