欢迎光临

木子屋

标题: SQL Server标量值函数：datetime转为tick

作者: dnawo

日期: 2014-05-25 01:20 PM

分类: 服务器

内容: 复制内容到剪贴板 程序代码create function getTicks(@time datetime) returns bigint
as
begin
declare @mintime datetime, @today datetime
declare @days bigint, @milliseconds bigint
declare @ticks bigint
select @mintime='1753-01-01', @today=dateadd(day,datediff(day,0,@time),0)
--0001-01-01和1753-01-01相差639905天
select @days=datediff(day,@mintime,@today)+639905, @milliseconds=datediff(millisecond,@today,@time)
select @ticks=(@days*24*60*60*1000 + @milliseconds)*10000
return @ticks
end
go
常见问题
问：为什么不直接用datediff(millisecond,'0001-01-01',@time)*10000得到tick值？
答：原因有两点，一是dateime类型日期范围为1753年1月1日到9999年12月31日，二是datediff函数，datepart为millisecond时，两个参数的最大差值为24天20小时31分钟23.647秒。
问：为什么dateime类型日期范围最小为1753年1月1日？
答：参阅http://www.mzwu.com/article.asp?id=3787。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.596 ms

返回

标题: SQL Server标量值函数：datetime转为tick

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.596 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.611 ms

返回