在mysql数据库中,我们不可避免的遇到两个时间相减的问题,形如2018-07-09 12:00:00 这种格式的时间数据相减,在mysql中,你如果直接拿亮哥datetime型数据相减,MySQL不会报错,也能得到一个结果,但是我要告诉你的是,这种直接相减得到的是一个不伦不类的结果,肯定不是秒,也不是毫秒。那么我们对于这种时间相减的判断结果,我们应该如何处理呢,我们一起探究一下。
有两种方式,第一种,TIME_TO_SEC()函数,可以帮你解决两个时间不跨天、不跨月、不跨年的计算,得到的是以秒为单位的时间,两个datetime类型时间均用次函数转换,可以得到一个正确的以秒为单位的时间差,但是记住前提条件,不跨天、不跨月份、年份。 第二种方法,UNIX_TIMESTAMP()函数,可以很好地支持跨天、跨月份、年份的时间计算,最终也可以得到一个以秒为单位的时间差。
看完上边一段文字,有人会疑惑,既然都是转为秒,那有什么区别。 区别在于,TIME_TO_SEC()只对datetime时间中的时分秒进行转换,得到一个秒为单位的时间, UNIX_TIMESTAMP() ,计算的是自1970年以来的秒数,自然对于跨天、月份、年份的时间计算具有更好的支持,相对来说 UNIX_TIMESTAMP() 更靠谱一些。
如果对文中的秒数有疑惑或质疑,欢迎发送邮件至13480167059@163.com,我将关注你们的每一条留言,并在方便的时候回复您的每一个疑问