【问题标题】:Is MySQL now() interval in milliseconds possible?MySQL now() 间隔是否可能以毫秒为单位?
【发布时间】:2017-06-10 15:01:47
【问题描述】:

我正在尝试仅选择 500 MS 内的行,但我不确定仅使用 MySQL 是否可行?

我当前的代码是:

$stmt = $mysqli->prepare('SELECT chat_user, chat_msg FROM chat_msg 
                          WHERE chat_id = ? 
                          AND chat_time > (NOW() - INTERVAL 1 SECOND) 
                          AND chat_user != ?');

我无法将它插入到代码块中。

【问题讨论】:

标签: php mysql mysqli


【解决方案1】:

将时间转换并选择为毫秒使用UNIX_TIMESTAMP 函数。

SELECT chat_user, chat_msg, (UNIX_TIMESTAMP(chat_time)*1000) As chattime FROM chat_msg 

UNIX_TIMESTAMP 将获得秒数,您需要乘以 1000 才能获得毫秒数。

【讨论】:

    【解决方案2】:

    MySQL 的DATE_SUB 函数(文档here)接受MICROSECOND 作为间隔类型之一,因此您可以减去500 * 1000 微秒并将其转换为Timestamp,例如:

    $stmt = $mysqli->prepare('SELECT chat_user, chat_msg FROM chat_msg 
                              WHERE chat_id = ? 
                              AND chat_time > (NOW() - INTERVAL 500000 MICROSECOND) 
                              AND chat_user != ?');
    

    如果chat_timeTimestamp 类型,则可以在WHERE 条件中使用TIMESTAMP(NOW() - INTERVAL 500000 MICROSECOND);UNIX_TIMESTAMP(NOW() - INTERVAL 500000 MICROSECOND);

    【讨论】:

    • 谢谢。我应该说我使用的是 DATETIME,但这也适用于 DATETIME。
    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多