mysql - 获取1个月后过期的记录

标签 mysql

我有一个文档表,文档可能有也可能没有到期日。

我需要查找 1 个月后过期的所有文档

SELECT * FROM `ph_document` d
    LEFT JOIN `ph_user` u ON d.user_id = u.user_id 
        WHERE `notification_one_month` = 0 
            AND `document_expiry` != 0  
            AND `document_expiry` >= NOW()
            AND `document_expiry` <= DATEADD(m,-1,NOW)

不幸的是,这个表中的日期列是 INT 保存 Unix Epoch 时间戳,而不是实际上 DATEDATETIME 所以我有点迷失了

最佳答案

您可以在日期时间中使用正确的转换,并在一个月之间使用 now()

SELECT * FROM `ph_document` d
LEFT JOIN `ph_user` u ON d.user_id = u.user_id 
    WHERE `notification_one_month` = 0 
        AND `document_expiry` != 0  
        AND from_unixtime(`document_expiry`) BETWEEN  NOW()  
                AND  DATE_ADD(NOW(), INTERVAL 1 MONTH);

关于mysql - 获取1个月后过期的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55488203/

相关文章:

mysql - 插入未保存在 MySQL 工作台表中的值?

php - 无法通过数据库上传文件

mysql - 以最后一条消息的顺序获取消息用户的 SQL 查询

使用 mysqli innerjoin 的 PHP 函数

php - MYSQLi bind_result 分配太多内存

php - $_SESSION 对 sql 注入(inject)安全吗?

php - 使用 Codeigniter 查询生成器自定义 where 字符串的安全性/漏洞

jquery - 如何使用jquery中的复选框删除多行

MySQL:三个相互关联的表

mysql - 多个表的数据库多对多?