首页 > 数据库 >SQL SERVER 日期和时间数据类型及函数 (Transact-SQL)

SQL SERVER 日期和时间数据类型及函数 (Transact-SQL)

时间:2024-04-01 19:00:52浏览次数:22  
标签:CONVERT varchar Transact 数据类型 SQL 15 100 SELECT GETDATE

declare @time1 datetime=getdate()
--代码
declare @time2 datetime=getdate()
SELECT DATEDIFF(year,        @TIME1,@TIME2);
SELECT DATEDIFF(quarter,     @TIME1,@TIME2);
SELECT DATEDIFF(month,       @TIME1,@TIME2);
SELECT DATEDIFF(dayofyear,   @TIME1,@TIME2);
SELECT DATEDIFF(day,         @TIME1,@TIME2);
SELECT DATEDIFF(week,        @TIME1,@TIME2);
SELECT DATEDIFF(hour,        @TIME1,@TIME2);
SELECT DATEDIFF(minute,      @TIME1,@TIME2);
SELECT DATEDIFF(second,      @TIME1,@TIME2);
SELECT DATEDIFF(millisecond, @TIME1,@TIME2);
SELECT DATEDIFF(microsecond, @TIME1,@TIME2);

--结束减开始时间
--datetime类型
--declare @d3 datetime='2023-10-13 14:31:38.100'
--declare @d4 datetime='2023-10-13 14:32:32.673'
--select GETDATE()

--datetime2类型
DECLARE @d3 datetime2 = '2023-10-13 14:46:03.4597353';
DECLARE @d4 datetime2 = '2023-10-13 14:46:53.1234567';
--SELECT SYSDATETIME() AS CurrentDateTime2;


DECLARE @diffInSeconds INT = DATEDIFF(SECOND, @d3, @d4) 
DECLARE @diffInMilliseconds INT = DATEDIFF(MILLISECOND, @d3, @d4)
DECLARE @diffInMicroseconds INT = DATEDIFF(MICROSECOND, @d3, @d4)

SELECT 
    CONCAT( 
        CASE WHEN @diffInSeconds >= 31536000 
        THEN CONCAT(@diffInSeconds / 31536000, '年 ') 
        ELSE '' END,

        CASE WHEN (@diffInSeconds / 2592000) % 12 > 0 
        THEN CONCAT((@diffInSeconds / 2592000) % 12, '月 ') 
        ELSE '' END, 

        CASE WHEN (@diffInSeconds / 86400) % 30 > 0 
        THEN CONCAT((@diffInSeconds / 86400) % 30, '日 ') 
        ELSE '' END, 

        CASE WHEN (@diffInSeconds / 3600) % 24 > 0 
        THEN CONCAT((@diffInSeconds / 3600) % 24, '小时 ') 
        ELSE '' END, 

        CASE WHEN (@diffInSeconds / 60) % 60 > 0 
        THEN CONCAT((@diffInSeconds / 60) % 60, '分 ') 
        ELSE '' END, 

        CASE WHEN @diffInSeconds % 60 > 0 
        THEN CONCAT(@diffInSeconds % 60, '秒 ') 
        ELSE '' END, 

        CASE WHEN @diffInMilliseconds % 1000 > 0 
        THEN CONCAT(@diffInMilliseconds % 1000, '毫秒 ') 
        ELSE '' END,

        CASE WHEN @diffInMicroseconds % 1000 > 0 
        THEN CONCAT(@diffInMicroseconds % 1000, '微秒') 
        ELSE '' END 

    ) AS [TimeDifference];



    
返回值类型 datetime2(7)
SYSDATETIME() 
返回包含计算机的日期和时间的 datetime2(7) 值,SQL Server 的实例正在该计算机上运行
SYSDATETIMEOFFSET()
返回包含计算机的日期和时间的 datetimeoffset(7) 值,SQL Server 的实例正在该计算机上运行。时区偏移量包含在内。
SYSUTCDATETIME()
返回包含计算机的日期和时间的 datetime2 值,SQL Server 的实例正在该计算机上运行。 日期和时间作为 UTC 时间(通用协调时间)返回。

返回值类型 datetime
CURRENT_TIMESTAMP
返回包含计算机的日期和时间的 datetime 值,SQL Server 的实例在该计算机上运行。 返回值不包括时区偏移量。
GETDATE()
返回包含计算机的日期和时间的 datetime 值,SQL Server 的实例在该计算机上运行。 返回值不包括时区偏移量。
GETUTCDATE();
返回包含计算机的日期和时间的 datetime 值,SQL Server 的实例在该计算机上运行。 该函数返回日期和时间作为 UTC 时间(协调世界时)。
SELECT SYSDATETIME() ,
SYSDATETIMEOFFSET() ,
SYSUTCDATETIME() ,
CURRENT_TIMESTAMP ,
GETDATE() ,
GETUTCDATE();

SELECT CONVERT (date, SYSDATETIME()) ,CONVERT (date, SYSDATETIMEOFFSET()) ,CONVERT (date, SYSUTCDATETIME()),
CONVERT (date, CURRENT_TIMESTAMP),CONVERT (date, GETDATE()),CONVERT (date, GETUTCDATE());

SELECT CONVERT (time,SYSDATETIME()),CONVERT (time,SYSDATETIMEOFFSET()),CONVERT (time,SYSUTCDATETIME()),
CONVERT (time,CURRENT_TIMESTAMP),CONVERT (time,GETDATE()),CONVERT (time,GETUTCDATE());
-------------------------------------------------------------------------

declare @day varchar(100)
set @day='2021-01-31 '
select DATEPART(dw,GETDATE()),CONVERT(nvarchar(50),GETDATE(),120)
select datename(dw,GETDATE()),CONVERT(nvarchar(50),GETDATE(),120)
select datename(dw, @day),CONVERT(nvarchar(50), @day,120)
select datename(dw,GETDATE())

select (convert(varchar(20),getdate()-1, 120))
--2021-01-28 15:58:26
select dateName(DD,getdate()-1)
--28

--上个月1号
select CONVERT(varchar(7), dateadd(mm,-1,getdate()) , 120) + '-1'
--本月1号
select CONVERT(varchar(7), getdate() , 120) + '-1'
--下个月1号
select CONVERT(varchar(7), dateadd(mm,1,getdate()) , 120) + '-1'
--本月天数
select day(dateadd(mm,1,getdate())-day(getdate()))

-------------------------------------------------------------------------
CONVERT(data_type,expression[,style]) 
convert(varchar(10),字段名,转换格式)
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
语句 结果
SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PM
SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09
SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15
SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09
SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09
SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09
SELECT CONVERT(varchar(100), GETDATE(), 6) 15 07 09
SELECT CONVERT(varchar(100), GETDATE(), 7) 07 15, 09
SELECT CONVERT(varchar(100), GETDATE(), 8) 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 9) 07 15 2009 4:06:26:513PM
SELECT CONVERT(varchar(100), GETDATE(), 10) 07-15-09
SELECT CONVERT(varchar(100), GETDATE(), 11) 09/07/15
SELECT CONVERT(varchar(100), GETDATE(), 12) 090715
SELECT CONVERT(varchar(100), GETDATE(), 13) 15 07 2009 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 14) 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 20) 2009-07-15 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 21) 2009-07-15 16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 22) 07/15/09 4:06:26 PM
SELECT CONVERT(varchar(100), GETDATE(), 23) 2009-07-15
SELECT CONVERT(varchar(100), GETDATE(), 24) 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 25) 2009-07-15 16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 100) 07 15 2009 4:06PM
SELECT CONVERT(varchar(100), GETDATE(), 101) 07/15/2009
SELECT CONVERT(varchar(100), GETDATE(), 102) 2009.07.15
SELECT CONVERT(varchar(100), GETDATE(), 103) 15/07/2009
SELECT CONVERT(varchar(100), GETDATE(), 104) 15.07.2009
SELECT CONVERT(varchar(100), GETDATE(), 105) 15-07-2009
SELECT CONVERT(varchar(100), GETDATE(), 106) 15 07 2009
SELECT CONVERT(varchar(100), GETDATE(), 107) 07 15, 2009
SELECT CONVERT(varchar(100), GETDATE(), 108) 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 109) 07 15 2009 4:06:26:513PM
SELECT CONVERT(varchar(100), GETDATE(), 110) 07-15-2009
SELECT CONVERT(varchar(100), GETDATE(), 111) 2009/07/15
SELECT CONVERT(varchar(100), GETDATE(), 112) 20090715
SELECT CONVERT(varchar(100), GETDATE(), 113) 15 07 2009 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 114) 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 120) 2009-07-15 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 121) 2009-07-15 16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 126) 2009-07-15T16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 130) 23 ??? 1430 4:06:26:513PM
SELECT CONVERT(varchar(100), GETDATE(), 131) 23/07/1430 4:06:26:513PM
--时间比较(毫秒数)
DATEDIFF(MS, '1970-01-01 08:00:00.000', '2022-06-06 12:30:30.555');

 

标签:CONVERT,varchar,Transact,数据类型,SQL,15,100,SELECT,GETDATE
From: https://www.cnblogs.com/yoooos/p/18109176

相关文章

  • Linux 安装 Mysql(Docker)
    Linux安装Mysql以下操作在root用户下否则加上sudodockerpullmysql:5.7注意容器名字如果有-会错误dockerrun-p3306:3306--namemysql_gulishangcheng\-v/mydata/mysql/log:/var/log/mysql\-v/mydata/mysql/data:/var/lib/mysql\-v/mydata/mysql/con......
  • java计算机毕业设计(附源码)医患辅助系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,医疗健康领域正经历着前所未有的变革。传统的医患交流模式受限于时间和空间,难以满足现代社会对医疗服务效率和质量的要求。医患辅......
  • java计算机毕业设计(附源码)医疗大数据系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:医疗大数据系统是近年来在医疗领域内兴起的一个重要研究方向,它利用现代信息技术手段,对海量的医疗健康数据进行采集、存储、管理和分析,以期提供更为精准、......
  • SQL SERVER 从入门到精通 第5版 第二篇 第6章 SQL函数的使用 读书笔记
     第六章SQL函数的使用按函数种类可以分为聚合函数,数学函数,字符串函数,日期和时间函数,转换函数和元数据函数6种.>.聚合函数. 聚合函数对一组值执行计算,并返回单个值.除count外,聚合函数都会忽略空值.通常与SELECT语句的GROUPBY子句一起......
  • python计算机毕设【附源码】毕业生离校系统的设计与实现(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,信息化管理已经成为了现代教育体系中不可或缺的一部分。对于高校而言,毕业生离校系统的设计与实现是提高学校管理效率、优化毕业生......
  • SqlServer事务语法及使用方法
    原文链接:https://blog.csdn.net/xiaouncle/article/details/52891563事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。可以使用一些T-SQL语句在事务中“标记”这些......
  • 【NoSQL】SpringBoot+Redis简单使用
    【NoSQL】SpringBoot+Redis简单使用Redis是一款key-value存储结构的内存级NoSQL数据库;支持多种数据存储格式、支持持久化、支持集群windows下载:https://github.com/tporadowski/redis/releases<dependency><groupId>org.springframework.boot</groupId><artifactId......
  • Day5之,原来数据类型还有这么多知识点
    Day5数据类型扩展知识关于数据类型的拓展知识二进制数是在数字前加上0b,八进制是加上0,十六进制是加上0xpublicstaticvoidmain(String[]args){//整数拓展进制二进制0b、八进制0、十六进制0xinti=10;inti2=010;//八进制inti......
  • java计算机毕业设计(附源码)一起捞餐厅点餐和管理系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在现代都市的快节奏生活中,餐饮业作为人们日常消费的重要组成部分,扮演着至关重要的角色。随着科技的不断进步和消费者需求的多样化,传统的餐饮服务方式已经......
  • java计算机毕业设计(附源码)一校置之系统的开发实现(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息化时代背景下,教育行业正经历着前所未有的变革。传统的教育管理方式已无法满足现代高效、精准的管理需求。随着计算机技术和互联网的发展,一校置之系......