MySQL计算yyyy-mm-dd为天

时间:2015-09-22 13:03:49

标签: mysql sql select date-formatting

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

2 个答案:

答案 0 :(得分:5)

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

SELECT DATE_SUB(NOW(), INTERVAL 45 DAY)

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

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

或者

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

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,请根据需要进行更改

答案 1 :(得分:2)

您可以使用str_to_date将字符串转换为日期,然后使用datediff查找当时与NOW()之间的天数:

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