使用 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;
我有一个这样的数据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;