使用 where 子句从上一小时内创建的 table 中获取数据行

grab the data rows from the table which created within last hour with where clause

我有一个这样的数据table

|-----------------------------------------------------------------|
| Id   |  OrderId |  Description   | CreatedAt                    |
|-----------------------------------------------------------------|
| 1    |  001     |  order desc 1  | Sat Apr 30 17:42:00 IST 2022 |
| 2    |  002     |  order desc 2  | Sat Apr 30 17:55:00 IST 2022 |
| 3    |  003     |  order desc 3  | Sat Apr 30 18:04:00 IST 2022 |
-------------------------------------------------------------------

所有列都是varchar/string类型。我希望查询仅获取最近 1 小时内创建的那些行。我为此创建了一个查询,但它的 return 空白结果

SELECT Id FROM TABLE WHERE CAST(CreatedAt as datetime) > DATE_SUB(NOW(), INTERVAL 1 HOUR)

不知道查询有误还是有什么需要修改的

看来您的 CreatedAt 栏实际上是文本。如果要将其转换为日期时间列,首先必须使用 STR_TO_DATE() 和适当的格式掩码。

SELECT Id
FROM yourTable
WHERE STR_TO_DATE(CreatedAt, '%a %b %d %H:%i:%s IST %Y') > NOW() - INTERVAL 1 HOUR;