MySQL 将 yyyy-mm-dd 计算为天

MySQL calculate yyyy-mm-dd to days

我目前有一列显示用户上次访问特定环境的时间,格式为 2015-01-26 15:35:45 - 我需要能够以某种方式计算/转换格式,以便确定用户在过去 45 天内访问过环境,使用 current_date 作为计算起始日期。

您可以使用 DATE_SUB 从当前日期减去 45 天并将其与您字段中的值进行比较,即

SELECT DATE_SUB(NOW(), INTERVAL 45 DAY)

2015-09-23 14:41:55 上执行时给出 2015-08-09 14:41:55,因此您的查询变为

SELECT * FROM table_name
WHERE last_login_dt > DATE_SUB(NOW(), INTERVAL 45 DAY)

您可以使用 DATEDIFF 减去两个日期,这将 return 给定日期之间的天数差异

SELECT DATEDIFF(NOW(), '2015-09-01')

给出 21 即 2015-09-01 比当前日期早 21 天。所以你的查询应该看起来像

SELECT * FROM table_name
WHERE DATEDIFF(NOW(), last_login_dt) >= 45

假设您最后登录日期的字段名称是last_login_dt,请根据需要更改

您可以使用 str_to_date to convert the string to a date, and then use datediff 找到从那时到 NOW() 之间的天数:

SELECT *
FROM   mytable
WHERE  DATEDIFF(CURRENT_DATE, STR_TO_DATE(last_login, '%Y-%m-%d %H-%i-%s')) >= 45