你的位置:首页 > 软件开发 > 数据库 > 关于datetime 和 int 之间相互转换

关于datetime 和 int 之间相互转换

发布时间:2016-06-23 13:00:12
在其他地方看到一个有点意思的东西。是记录转换规则的。DECLARE @Date1 DATETIME = 2016-06-21 11:53:00 , @Date2 DATETIME = 2016-06-22 13:25:00 SELECT DATEDIFF(day, ...

在其他地方看到一个有点意思的东西。是记录转换规则的。

DECLARE @Date1 DATETIME = '2016-06-21 11:53:00'   , @Date2 DATETIME = '2016-06-22 13:25:00' SELECT  DATEDIFF(day, @Date1, @Date2), CAST(@Date2 - @Date1 AS INT), CAST(@Date2 AS INT) - CAST(@Date1 AS INT), CAST(CAST(@Date2 AS FLOAT) - CAST(@Date1 AS FLOAT) AS INT)
结果放在ssms上面执行,在这个部分答案出错了下面是解释过程DATEDIFF(day, @Date1, @Date2)  结果是1不是2(不是已经多了1天有多吗?) 关于这个函数,对于day 的差值,只会精确到 day这这一层,即只对比年月日这3项。加入datediff 的参数是Month 那么,比对的项只有年和月,以此类推。所以说虽然看起来超过了一天,但是相减转换成int也是1
CAST(@Date2 - @Date1 AS INT) 1 日期的运算同上面一样。而且datetime 转换成数字也只会比对日期部分,所以答案就是1
CAST(@Date2 AS INT) - CAST(@Date1 AS INT) 2 这个就要看 cast 的转化了。对于这个例子,把日期转换成int 虽然只是跟日期部分有关,但是。这里有个特殊的地方是只要时间部分超过了12点,就会+1(相当于四舍五入),所以答案是2
CAST(CAST(@Date2 AS FLOAT) - CAST(@Date1 AS FLOAT) AS INT) 1 这里先转化成浮点,然后相减之后转换成int ,转成浮点的时候,小数位就是计算时间部分占一天的比例。这样看相减是比1多1点,燃鹅最后转换成int ,就把小数位抹掉,就是1了

 


 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:关于datetime 和 int 之间相互转换

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录