Microsoft SQL Server date系列使用

背景:

项目数据库需要用到 date 字段,看了下官方文档后,简单操作了一下供大家参考。

日期和时间

数据格式

在Microsoft SQL Server的类型系统中,使用 date 表示日期类型,使用time表示时间类型,使用DateTime和DateTime2表示日期和时间的组合,DateTime2是DateTime的升级版本。

这些数据类型占用的存储空间各不相同;当存储大量数据时,合理的选择小数秒的精度,能够节省数据的占用空间。

具体的数据格式如下图:
在这里插入图片描述

获取当前系统日期和时间

SELECT 'SYSDATETIME()      ', SYSDATETIME();  
SELECT 'SYSDATETIMEOFFSET()', SYSDATETIMEOFFSET();  
SELECT 'SYSUTCDATETIME()   ', SYSUTCDATETIME();  
SELECT 'CURRENT_TIMESTAMP  ', CURRENT_TIMESTAMP;  
SELECT 'GETDATE()          ', GETDATE();  
SELECT 'GETUTCDATE()       ', GETUTCDATE();  
/* Returned:  
SYSDATETIME()            2007-05-03 18:34:11.9351421  
SYSDATETIMEOFFSET()      2007-05-03 18:34:11.9351421 -07:00  
SYSUTCDATETIME()         2007-05-04 01:34:11.9351421  
CURRENT_TIMESTAMP        2007-05-03 18:34:11.933  
GETDATE()                2007-05-03 18:34:11.933  
GETUTCDATE()             2007-05-04 01:34:11.933  
*/

实际使用

创建表时,采用以下语句,可根据自己要的数据类型来创建
例如我选择的 datetime

CREATE TABLE DateTest(
	DateTestId int PRIMARY KEY IDENTITY,
	DateTestCreateTime datetime ,
	DateTestUpdateTime datetime ,
);

我们插入一条语句:

INSERT INTO DateTest values(GETUTCDATE(),GETDATE());

查看一下结果:

在这里插入图片描述
诶 跟我的本地PC的时间不一样啊 什么鬼……
查阅发现:

因为咱的sql server2008连接的是局域网上的数据库,故通过getdate()得到的自然会是所连接的服务器上的系统时间,而不是本地PC的系统时间。

那怎么更改成本地的时间呢???

使用 SWITCHOFFSET 切换时区:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

DATETIMEOFFSET:是一个可以解析为 datetimeoffset(n) 值的表达式。

time_zone:是一个格式为 [+|-]TZH:TZM 的字符串,或是一个表示时区偏移量的带符号的整数(分钟数),假定它能够感知夏时制并作出相应的调整。

把本地时间的时区零时区(伦敦)切换到东八区(北京):

DECLARE @remote DATETIMEOFFSET 
DECLARE @local DATETIMEOFFSET
SET @remote = SYSDATETIMEOFFSET()
SET @local = SWITCHOFFSET (@remote, '+08:00')
SELECT @remote AS remote_time,@local AS local_t

结果如图
在这里插入图片描述
本地PC时间在这里插入图片描述
时间更改成功!!!
当然了之后插入数据库时语句可以简单一些

INSERT INTO DateTest values(SWITCHOFFSET (SYSDATETIMEOFFSET(),'+08:00'));

在这里插入图片描述

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值