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

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

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)

结论:一个标准的SQL查询语句

前提:假设起始时间:start_at,结束时间:end_at

现在根据不同的字段类型说明如何写。

1 - INT类型,存储时间戳

SELECT * FROM table_name WHERE ( end_at - start_at ) >3600

2 - DATETIME类型

假如 start_at 格式类似于 “2020-10-01 12:13:14”。那么使用函数进行求差值:

SELECT * FROM table_name WHERE TIMESTAMPDIFF(SECOND, start_at, end_at) >3600

以上。

不好做吧,datediff函数只能返回一行,你要想用就得做个循环什么的。还不如直接用sql语句一下查出来。

SELECT * FROM table

WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <=7

你确定 (r)这个是什么意思啊 你输出你的sql语句在数据库中直接执行下看看报什么错 应该是你的s.getString(uploadtime)这里错了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6128144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存