SQL日期函数

SQL日期函数中的类型码可以为0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
,20,21,22,23,24,25,100,101,102,103,104,105,106,107,108,109,100,
110,111,112,113,114,120,121,126,127,130,131

函数 结果
select CONVERT(varchar(30),getdate(),0) 09 13 2017 3:51PM
select CONVERT(varchar(30),getdate(),1) 09/13/17
select CONVERT(varchar(30),getdate(),2) 17.09.13
select CONVERT(varchar(30),getdate(),3) 13/09/17
select CONVERT(varchar(30),getdate(),4) 13.09.17
select CONVERT(varchar(30),getdate(),5) 13-09-17
select CONVERT(varchar(30),getdate(),6) 13 09 17
select CONVERT(varchar(30),getdate(),7) 09 13, 17
select CONVERT(varchar(30),getdate(),8) 15:51:54
select CONVERT(varchar(30),getdate(),9) 09 13 2017 3:51:54:550PM
select CONVERT(varchar(30),getdate(),10) 09-13-17
select CONVERT(varchar(30),getdate(),11) 17/09/13
select CONVERT(varchar(30),getdate(),12) 170913
select CONVERT(varchar(30),getdate(),13) 13 09 2017 15:51:54:550
select CONVERT(varchar(30),getdate(),14) 15:51:54:550
select CONVERT(varchar(30),getdate(),20) 2017-09-13 15:51:54
select CONVERT(varchar(30),getdate(),21) 2017-09-13 15:51:54.550
select CONVERT(varchar(30),getdate(),22) 09/13/17 3:51:54 PM
select CONVERT(varchar(30),getdate(),23) 2017-09-13
select CONVERT(varchar(30),getdate(),24) 15:51:54
select CONVERT(varchar(30),getdate(),25) 2017-09-13 15:51:54.550
select CONVERT(varchar(30),getdate(),100) 09 13 2017 3:51PM
select CONVERT(varchar(30),getdate(),101) 09/13/2017
select CONVERT(varchar(30),getdate(),102) 2017.09.13
select CONVERT(varchar(30),getdate(),103) 13/09/2017
select CONVERT(varchar(30),getdate(),104) 13.09.2017
select CONVERT(varchar(30),getdate(),105) 13-09-2017
select CONVERT(varchar(30),getdate(),106) 13 09 2017
select CONVERT(varchar(30),getdate(),107) 09 13, 2017
select CONVERT(varchar(30),getdate(),108) 15:51:54
select CONVERT(varchar(30),getdate(),109) 09 13 2017 3:51:54:550PM
select CONVERT(varchar(30),getdate(),110) 09-13-2017
select CONVERT(varchar(30),getdate(),111) 2017/09/13
select CONVERT(varchar(30),getdate(),112) 20170913
select CONVERT(varchar(30),getdate(),113) 13 09 2017 15:51:54:550
select CONVERT(varchar(30),getdate(),114) 15:51:54:550
select CONVERT(varchar(30),getdate(),120) 2017-09-13 15:51:54
select CONVERT(varchar(30),getdate(),121) 2017-09-13 15:51:54.550
select CONVERT(varchar(30),getdate(),126) 2017-09-13T15:51:54.550
select CONVERT(varchar(30),getdate(),127) 2017-09-13T15:51:54.550
select CONVERT(varchar(30),getdate(),130) 22 ?? ????? 1438 3:51:54:550P
select CONVERT(varchar(30),getdate(),131) 22/12/1438 3:51:54:550PM

其中,21,25,121效果相同(2017-09-13 15:51:54.550 )。
其中,在select语句中需要获取固定格式日期时,只需将getdate()替换成需要查找的字段名,需要设置的该字段的别名直接在后面添加即可,

如:select CONVERT(varchar(30), RQ_REQ_DATE, 21) from td.REQ;

查询结果:

出处:https://blog.csdn.net/Amanda_Yt/article/details/77968559

==================================================================

另外在提供一个和日期相关的函数,方便大家参考。

getdate()函数:取得系统当前的日期和时间。返回值为datetime类型的。

用法:getdate()

例子:

select getdate() as dte,dateadd(day,-1,getdate()) as nowdat

datepart()函数:以整数的形式返回时间的指定部分。

用法:datepart(datepart,date)

参数说明:datepart时要返回的时间的部分,常用取值year、month、day、hour、minute、second

date是所指定的时间。

例子:

select datepart(month, getdate()) as'Month Number'

dateadd()函数:通过给指定的时间的指定部分加上一个整数值以返回一个新时间值。

用法:dateadd(datepart,number,date)

参数说明:datepart(同上)

date(同上)

number要增加的值,整型,可正可负,正值返回date之后的时间值,负值返回date之前的时间值

例子:

select getdate() as today

select dateadd(day,-1,getdate())

select dateadd(day,1,getdate())

datediff()函数:返回两个时间以指定时间部分来计算的差值。返回整数值。

如1991-6-12和1991-6-21之间以天来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月

用法:datediff(darepart,date1,date2)

参数说明:datepart(同上)

date1、date2(同上date)

例子:

select datediff(month,'1991-6-12','1992-6-21') as a

常用时间函数:

使用时间和日期的函数

getdate():获取系统当前时间
dateadd(datepart,number,date):计算在一个时间的基础上增加一个时间后的新时间值,比如:dateadd(yy,30,getdate())
datediff(datepart,startdate,enddate):计算两个时间的差值,比如:datediff(yy,getdate(),'2008-08-08')
dataname(datepart,date):获取时间不同部分的值,返回值为字符串
datepart(datepart,date):和datename相似,只是返回值为整型
day(date):获取指定时间的天数
month(date):获取指定时间的月份
year(date):获取指定时间的年份

SQL Server的几个分页解决方案:

解决方案1:
declare @pageIndex int,@pageSize int,@recordNum int
set @pageIndex=3
set @pageSize=3
select top(@pageSize) * from Grade where id not in (select top 
((@pageIndex-1)*@pageSize) id from Grade)//显示出第 7 到 第 9 条

select @recordNum=count(*) from Grade//显示总记录数

点评:效率不高,而且取出来的数据是按id排序的。如果想按其他字段排序就不行。

解决方案二:
declare @id int
--set rowcount 3
--select @id=id from Grade
select top 3 @id=id from Grade//这句等效于上面注视的两句
select top 3 * form Grade where id>@id//查询出第 4 到第 6 条记录

点评:效率比方案一稍高,但是取出来的数据是也按id排序的。如果想按其他字段排序就不行

解决方案三:
create table #table(new_id int identity(1,1) primary key,id int)
insert into #table(id) select id from grade
select a.* from grade a join #table b on (b.new_id between 6 and 9) and a.id=b.id
//取出第 6 到第 9 条,
点评:其原理是把要分页的表的主键插入到临时表中,临时表的字段就是一个标识列和要分
页的表的主键列(包括是多个主键的情况,上面的两种方法就不行)。特点是效率高,取出
来的数据能根据自己要求的字段排序。

临时表:
上面的解决方案三就是使用了临时表,它与永久表相似,但临时表存储在 tempdb 中,当不
再使用时会自动删除。
临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表
的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server
实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户
都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

表级变量:
象上面分页的例子也可以使用表级变量,象下面这样:

declare @table table (newid int identiey(1,1),id int)
insert into @table(id) select id from grade
select a.* from grade a join @table b on (b.new_id between 6 and 9) and a.id=b.id
这种方式比使用临时表分页效率更高。

出处:https://www.cnblogs.com/Sea1ee/p/5991273.html

Sql server日期函数用法的更多相关文章

  1. SQL Server 日期函数:某天是星期几?

    [鹏城万里] 发表于 www.sqlstudy.com 要得到某一天是星期几,需要用到 SQL Server 中的日期函数:datename(). 今天是星期几,例子 1: set language ...

  2. SQL Server日期函数总结

    获得一个月的天数:首先到得一个月最后一天的日期,通过 SQL Server 日期函数 day() 取得日期中的“天 ”部分 获得 2008 年 2 月份的天数:select day(cast('200 ...

  3. SQL Server日期函数之获得一个月中的天数

    SQL Server日期函数之获得一个月中的天数在实际中的应用比例还是占为多数的,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱,望会在以后的学习或是工作中带来很大的帮助. 获得一个月 ...

  4. Sql server 日期函数和日期转换

    时间函数 SQL Server Date 函数 下面的表格列出了 SQL Server 中最重要的内建日期函数: 函数 描述 GETDATE() 返回当前日期和时间 DATEPART(Type,dat ...

  5. sql server 日期函数

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  6. SQL Server 日期函数大全

    一.统计语句 1.--统计当前[>当天00点以后的数据] SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT( ...

  7. SQL Server 日期函数:EOMonth、DateFormat、Format、DatePart、DateName

    一,月份的最后一天 函数 EOMonth 返回指定日期的最后一天 EOMONTH ( start_date [, month_to_add ] ) 1,对于start_date 有两种输入方式,能够转 ...

  8. 四个很好用的Sql Server 日期函数:DateDiff、DatePart、DateAdd、DateName

    我以前查一段时间范围内的数据都是在程序里计算好日期再掉查询语句,现在我用下面的函数.SQL SERVER没有查一季度数据的函数. DateDiff函数: 描述 返回两个日期之间的时间间隔. 语法 Da ...

  9. SQL Server DATEDIFF() 函数用法

    定义和用法 DATEDIFF() 函数返回两个日期之间的时间,例如计算年龄大小. DATEDIFF(datepart,startdate,enddate)startdate 和 enddate 参数是 ...

随机推荐

  1. 用matlab绘制中国地图

    reference:https://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html shp: http://muchong.com/ht ...

  2. matlab中hold on 和hold off功能的区别

    hold off 使但当前轴及图形不具备被刷新的性质 hold on和hold off是相对使用的 前者为,你在当前轴(坐标系)中画了一幅图,再画另一幅是,原来的图还在,与新图共存,都看得到: 后者表 ...

  3. python23的区别-日常记录

    1. xrange:python3 中取消了range函数,把python2中的xrange重新命名为range,所以在python3中直接用range就行. 2. print:python3中pri ...

  4. 手机号的 AES/CBC/PKCS7Padding 加解密

    前言:接口中上次的手机号码和密码是传入的加密的,模拟自动化的时候也需要先对数据进行加密 1.各种语言实现 网上已经各种语言实现好的AES加密,可以点击查看:http://outofmemory.cn/ ...

  5. IONIC和Cordova安装、打包踩过的坑

    1.问题1:直接执行npm install -g cordova ionic,因为网络原因,执行不成功 解决方案:将npm映射到淘宝服务器:npm install -g cnpm --registry ...

  6. mysql主从复制-读写分离

    mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...

  7. python-web-django前后端交互

    1.前端请求数据URL由谁来写 在开发中,URL主要是由后台来写好给前端. 若后台在查询数据,需要借助查询条件才能查询到前端需要的数据时,这时后台会要求前端提供相关的查询参数(即URL请求的参数). ...

  8. vuejs 1.x与2.x差异

    1.x与2.x区别 v-for列表查询中 当前下标:$index --> index 1.x 用法 v-for="v in myData" =>$index获取下标 / ...

  9. "@P0"附近有语法错误解释及定位修复

    解释: "@P0" 指的是sql语句被预编译之后,其所对应的占位符的相对顺序位置,通俗的讲,就是它代表第几个占位符的位置,其中的0,并不是固定的,如果将定位符看做数组的话,这里的数 ...

  10. opengl库学习

    http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html http://blog.csdn.net/wolf96/article/d ...