mysql 中,计算2个datetime类型的字段,相减得到的分钟数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 中,计算2个datetime类型的字段,相减得到的分钟数相关的知识,希望对你有一定的参考价值。

一个计费程序
stime 是datetime类型的字段
问题1:我用now()-stime得到的数字好像不是秒,这个数字是什么单位?
问题2:如何得到now()与stime相差的时间(单位:分钟)

now()-stime 得到的是minute * 100,这个数值的与分钟的单位换算是100=1分钟,超过60分钟这个数值无效。

得到时间差:
select (unix_timestamp(now())-unix_timestamp(stime))/60 from table_name where whew_condition;

mysql> select * from timeminus;
+----+---------------------+
| id | stime |
+----+---------------------+
| 1 | 2011-09-21 09:30:00 |
| 2 | 2011-09-21 11:30:00 |
| 3 | 2011-09-20 00:00:00 |
+----+---------------------+
3 rows in set (0.02 sec)

# 计算id=1与id=2的时间差(分钟)
mysql> select (unix_timestamp(a.stime)-unix_timestamp(b.stime))/60 from (select
* from timeminus where id=2) a inner join (select * from timeminus where id=1) b
;
+------------------------------------------------------+
| (unix_timestamp(a.stime)-unix_timestamp(b.stime))/60 |
+------------------------------------------------------+
| 120.0000 |
+------------------------------------------------------+
1 row in set (0.00 sec)
参考技术A sql server : datediff(“mi”,stime,getdate())
mysql: datediff(stime,now()) 得到的是“天数”的差值;
unix_timestamp(stime),就能得到秒数的差值了, (返回值:自'1970-01-01 00:00:00'的到stime的秒数差)
参考技术B 下载好后,双击安装就可以。
可以升级任意 SQL Server 2008 版本。Service Pack 2 包含 SQL Server 实用工具和数据层应用程序 (DAC) 的更新,还包含关于 Microsoft Reporting Services 与 Microsoft SharePoint 2010 Technologies 的集成功能的更新。Service Pack 2 引入了对数据库中最多 15,000 个分区的支持,并且包括 SQL Server 2008 SP1 累积更新 1 到 8。
Microsoft SQL Server 2008 Service Pack 1 不是安装 SQL Server 2008 Service Pack 2 的先决条件。(就是说,没有安装过Service Pack 1,也可以直接安装Service Pack 2)本回答被提问者采纳
参考技术C 阿斯

mysql中datetime类型字段为默认值0000-00-00 00:00:00怎么取出来

今天遇到了这个问题,rs.getString(4)是datetime类型,而且是默认值报错:然后网上搜素了一下解决方案如下:原来是jdbc连接的问题改成这样jdbc:mysql://localhost:3306/brilliant?user=conglin&password=conglin&useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNullreliably in Java.Connector/J 3.0.x always converted them to NULL when being read from a ResultSet.当这些值正在从ResultSet容器中读取时候,Connector/J 3.0.x 一直把他们转换为NULL值。Connector/J 3.1 throws an exception by default when these values are encountered as this is the most correct behavior according to the JDBC and SQL standards.依照JDBC和SQL的标准这些值碰到的最正确的处理方式就是在缺省情况下产生异常This behavior can be modified using the zeroDateTimeBehavior configuration property. The allowable values are:JDBC允许用下列的值对zeroDateTimeBehavior 属性来设置这些处理方式,exception (the default), which throws an SQLException with an SQLState of S1009.设置为exception 异常(缺省)用一个SQLState的s1009错误号来抛出一个异常convertToNull, which returns NULL instead of the date.设置为convertToNull,用NULL值来代替这个日期类型 参考技术A 当你插入一条数据时,如果不填这个字段的值,该列自己会填写默认值。数据库存储的是数据,你应该取出来的是数据,而不是类型吧

以上是关于mysql 中,计算2个datetime类型的字段,相减得到的分钟数的主要内容,如果未能解决你的问题,请参考以下文章

mysql插入datetime类型字段

MySQL数据库里面有个字段是datetime类型的,我想要根据这个字段查询今天的数据,where条件怎么写啊?

Mysql存储日期类型用inttimestamp还是datetime?

mysql的表中字段如何进行累加

MYSQL计算两个字段日期差

java怎么取出mysql中datetime类型数据字段