不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
SQL Server标量值函数:datetime转为tick
编辑:dnawo 日期:2014-05-25
复制内容到剪贴板
程序代码

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
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 | 引用: 0 | 查看次数: 5929
发表评论
请登录后再发表评论!