首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mysql utc_timestamp四舍五入到下一个五分钟块。

将mysql utc_timestamp四舍五入到下一个五分钟块。
EN

Stack Overflow用户
提问于 2010-11-12 00:28:52
回答 3查看 2.6K关注 0票数 2

我需要从获取UTC当前时间的结果中找到下一个(分钟可被5整除):00,让我解释一下...

我使用

代码语言:javascript
复制
SELECT UTC_TIMESTAMP()

函数,返回“MySql -11-11 16:26:19”。

然后我想将这个值转换为"2010-11-11 16:30:00",最好只使用MySql,或者使用MySql和PHP的组合。

干杯!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-12 04:41:18

代码语言:javascript
复制
MsSQL:
DATEADD(second, (60 - DATEPART(second, Last_Updated)) + ((5 - (DATEPART(minute, Last_Updated) % 5)) * 60) - 60, Last_Updated)
MySQL:
SELECT DATE_ADD(UTC_TIMESTAMP(), INTERVAL ((60 - SECOND(UTC_TIMESTAMP())) + ((5 - (MINUTE(UTC_TIMESTAMP()) % 5)) * 60) - 60) SECOND);

将"Last_Updated“替换为您要转换的值,但这将在5:00到下一个5分钟间隔内找到任何值。

代码语言:javascript
复制
2010-10-26 18:04:07.000 2010-10-26 18:05:00.000
2010-11-10 17:18:59.000 2010-11-10 17:20:00.000
2010-11-10 20:59:27.000 2010-11-10 21:00:00.000
2010-11-10 20:59:46.000 2010-11-10 21:00:00.000
2010-11-11 12:00:51.000 2010-11-11 12:05:00.000
2010-11-11 12:30:59.000 2010-11-11 12:35:00.000

这些是我在我那端的数据库上测试得到的结果。

EDIT忘记包含MySQL版本了,哦。我还保留了MsSQL版本,以防其他人在此过程中感到好奇。

票数 3
EN

Stack Overflow用户

发布于 2010-11-12 00:46:10

编辑:我不是MySQL用户...我会留下必要的东西,也许有人会用它做更多的事情。

代码语言:javascript
复制
SELECT UTC_TIMESTAMP() + 300 - UNIX_TIMESTAMP() % 300;

编辑:我刚刚重写了上面的代码,以便在MySQL中工作:

代码语言:javascript
复制
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(UTC_TIMESTAMP()) 
+ 300 - (UNIX_TIMESTAMP(UTC_TIMESTAMP()) % 300));

我不认为这正是操作员想要的,因为当时间可以被5分钟整除时,它也会舍入5分钟。例如,14:45:00将向上舍入为14:50:00,这是错误的。但这是朝着正确方向迈出的一步。

票数 3
EN

Stack Overflow用户

发布于 2011-04-23 21:38:22

我会结合使用UNIX_TIMESTAMP()和FROM_UNIXTIME()以及ROUND()来达到这个目的。

因此,最近的5分钟界限是:

代码语言:javascript
复制
select now(),from_unixtime(300 * round(unix_timestamp(now())/300));

+---------------------+-------------------------------------------------------+
| now()               | from_unixtime(300 * round(unix_timestamp(now())/300)) |
+---------------------+-------------------------------------------------------+
| 2011-04-23 09:20:35 | 2011-04-23 09:20:00                                   | 
+---------------------+-------------------------------------------------------+

使用unix时间,您可以在几秒钟内完成工作。最近的10秒你除以10,然后四舍五入再乘以10。

最近的分钟-使用60最近的小时-使用3600

你明白了吧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4156671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档