gpt4 book ai didi

mysql - 使用sql计算时间前

转载 作者:行者123 更新时间:2023-11-29 01:49:30 26 4
gpt4 key购买 nike

假设我有下表test,它有列idtimepost 和这是它拥有的数据样本。

-----------------------------------
id time post
-----------------------------------
1 2018-06-17 16:12:30 post1
2 2018-06-17 16:13:09 post2
3 2017-06-15 16:12:30 post7
----------------------------------

我只想使用 SQL 打印出每篇文章被添加到数据库后的天数、小时数、分钟数和秒数

好的,这是我的第一次尝试

SELECT
id,
time,
NOW(),
CONCAT (
FLOOR(TIME_FORMAT(SEC_TO_TIME(NOW() - `time`), '%H') / 24),
' Days ',
MOD (TIME_FORMAT(SEC_TO_TIME(NOW() - `time`), '%H'), 24),
' Hours ',
TIME_FORMAT(SEC_TO_TIME(NOW() - `time`), '%i Minutes %s Seconds'),
' ago'
) AS `ago`
FROM
`test`;

但它似乎没有给出正确的计算,例如上面示例的输出是

1   2018-06-17 16:12:30 2018-06-17 20:38:08 0 Days 11 Hours 49 Minutes 38 Seconds ago
2 2018-06-17 16:13:09 2018-06-17 20:38:08 0 Days 11 Hours 48 Minutes 19 Seconds ago
3 2017-06-15 16:12:30 2018-06-17 20:38:08 34 Days 22 Hours 59 Minutes 59 Seconds ago

如您所见,在 id = 3 中,差异应该不仅仅是打印出来的 34

所以代码有什么问题?! ~谢谢

最佳答案

您可以试试这个查询。通过 TIMESTAMPDIFF 计算间隔和 TIMESTAMPADD功能。

SELECT
id,
time,
NOW(),
CONCAT (
TIMESTAMPDIFF(DAY,`time`, NOW()),' Days ',
TIMESTAMPDIFF(HOUR, TIMESTAMPADD(DAY, TIMESTAMPDIFF(DAY, `time`, NOW()), `time`), NOW()),' Hours ',
TIMESTAMPDIFF(MINUTE, TIMESTAMPADD(HOUR, TIMESTAMPDIFF(HOUR, `time`, NOW()), `time`), NOW()), ' Minutes ',
TIMESTAMPDIFF(SECOND, TIMESTAMPADD(MINUTE, TIMESTAMPDIFF(MINUTE, `time`, NOW()), `time`), NOW()), ' Seconds '
' ago' ) AS `ago`
FROM
`test`;

sqlfiddle:http://sqlfiddle.com/#!9/5e8085/2

注意

例如,您想在 SECOND 上获取间隔

让我们一步一步来了解它:

1. TIMESTAMPDIFF(MINUTE, time, NOW())获取间隔 MINUTEtime 之间和 NOW()

2。 TIMESTAMPADD(MINUTE, TIMESTAMPDIFF(MINUTE, time, NOW()), time)附加间隔 MINUTEtime , 让他们在 second 上只有间隔时间.

3.以秒为单位计算间隔

关于mysql - 使用sql计算时间前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50899519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com