我需要从获取UTC当前时间的结果中找到下一个(分钟可被5整除):00,让我解释一下...
我使用
SELECT UTC_TIMESTAMP()函数,返回“MySql -11-11 16:26:19”。
然后我想将这个值转换为"2010-11-11 16:30:00",最好只使用MySql,或者使用MySql和PHP的组合。
干杯!
发布于 2010-11-12 04:41:18
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分钟间隔内找到任何值。
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版本,以防其他人在此过程中感到好奇。
发布于 2010-11-12 00:46:10
编辑:我不是MySQL用户...我会留下必要的东西,也许有人会用它做更多的事情。
SELECT UTC_TIMESTAMP() + 300 - UNIX_TIMESTAMP() % 300;编辑:我刚刚重写了上面的代码,以便在MySQL中工作:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(UTC_TIMESTAMP())
+ 300 - (UNIX_TIMESTAMP(UTC_TIMESTAMP()) % 300));我不认为这正是操作员想要的,因为当时间可以被5分钟整除时,它也会舍入5分钟。例如,14:45:00将向上舍入为14:50:00,这是错误的。但这是朝着正确方向迈出的一步。
发布于 2011-04-23 21:38:22
我会结合使用UNIX_TIMESTAMP()和FROM_UNIXTIME()以及ROUND()来达到这个目的。
因此,最近的5分钟界限是:
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
你明白了吧。
https://stackoverflow.com/questions/4156671
复制相似问题