MYSQL DATE\u SUB无法正常工作
我试图返回在最后10秒内创建的所有行,即创建日期小于10秒的行。下面是我正在使用的sql,但这似乎不起作用: 选择COUNTamount FROM tablename,其中date\u created>=date\u SUBNOW,间隔10秒 有人能帮我吗MYSQL DATE\u SUB无法正常工作,mysql,date,Mysql,Date,我试图返回在最后10秒内创建的所有行,即创建日期小于10秒的行。下面是我正在使用的sql,但这似乎不起作用: 选择COUNTamount FROM tablename,其中date\u created>=date\u SUBNOW,间隔10秒 有人能帮我吗 非常感谢。请确保将“创建日期”列设置为时间戳而不是日期时间-否则计算将无法正常工作 漫长的一天 感谢您的帮助。您的查询中唯一的缺陷是它在将来返回元素: mysql> create table tablename( ->
非常感谢。请确保将“创建日期”列设置为时间戳而不是日期时间-否则计算将无法正常工作 漫长的一天
感谢您的帮助。您的查询中唯一的缺陷是它在将来返回元素:
mysql> create table tablename(
-> date_created datetime
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> insert into tablename (date_created) values
-> ('2000-02-29 15:00:00'),
-> (CURRENT_TIMESTAMP),
-> (CURRENT_TIMESTAMP - interval 5 second),
-> (CURRENT_TIMESTAMP - interval 11 second),
-> ('2022-08-14 12:00:00');
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql>
mysql> select date_created,
-> case
-> when date_created>= DATE_SUB(NOW(), INTERVAL 10 SECOND)
-> then 'Matches'
-> else 'Does not match'
-> end as 'Match'
-> from tablename;
+---------------------+----------------+
| date_created | Match |
+---------------------+----------------+
| 2000-02-29 15:00:00 | Does not match |
| 2015-11-06 11:44:17 | Matches |
| 2015-11-06 11:44:12 | Matches |
| 2015-11-06 11:44:06 | Does not match |
| 2022-08-14 12:00:00 | Matches | <==== This is not correct
+---------------------+----------------+
5 rows in set (0.00 sec)
只需附加相应的限制:
AND date_created<=NOW()
你能更好地解释什么似乎不起作用吗?是的,似乎所有的结果都不到10秒,甚至是一个多小时前产生的结果。我想也许>=应该是您的日期值是否正确?现在打印时,它是否显示当前时间?是的,我几分钟前刚刚发布了另一个,它存储为2015-11-05 15:19:22英国服务器如果您希望创建日期,为什么您认为日期计算不能适用于所有日期类型?这就像声称你可以乘整数,但不能乘浮点数一样?