拨开SQL Server中的毫秒分界线(sqlserver去毫秒)
拨开SQL Server中的毫秒分界线
SQL Server系统使用毫秒级时间表示数据库记录的更新时间,如果需要拨开这个毫秒的分界线,进行更精确的时间表示,那么可以使用Sql Server中的函数SYSDATETIME()、SYSUTCDATETIME(),他们之间的区别是SYSDATETIME()函数返回的记录当前标准时间,而SYSUTCDATETIME()函数返回的是当前UTC(Coordinated Universal Time)时间,这两个函数都返回毫秒级的时间,拨开了SQL Server毫秒分界线。
例如,可以使用以下代码来获取毫秒级的当前标准时间:
SELECT [Time] = CONVERT(CHAR(20), SYSDATETIME(), 121)
该语句会返回一个20位的字符串,格式如下:
2021-04-07 11:20:06.610
可以看到,回来的结果已经是毫秒级的时间,由于Sql Server 默认只到微秒级,要想得到毫秒级的时间,就需要使用这两个函数。
需要注意的是,这两个函数只能获取毫秒级的精确时间,即使用CONVERT函数转换为字符串时仍然是毫秒级的精确时间,但是无法获取更精确的时间数据。
另外,来自SQL Server 2017版本时,Sql server支持一种新的数据类型DATETIME2 ,它可以表示到100纳秒级的时间数据,可以使用如下代码查看:
SELECT [Time] = CONVERT(CHAR(30), DATETIME2FROMPARTS(2021, 4, 7, 11, 21, 35, 62873, 0), 121)
该语句返回的结果如下:
2021-04-07 11:21:35.6287300
可以看到,这是一个30位的字符串,表示的是100纳秒级的精确时间,使用DATETIME2数据类型,可以拨开这个毫秒的分界线,实现获取更加精确的时间。
因此,使用Sql Server中的函数SYSDATETIME ()、SYSUTCDATETIME() 可以拨开毫秒的分界,实现获取更加精确的时间,帮助我们更好地管理服务器及数据库。