首页 > 解决方案 > 查询根据文件名上的时间戳获取过去 24 小时内收到的记录

问题描述

我正在使用 SQL 专业版。我想从表中获取过去 24 小时内收到的记录。让我们考虑表名 = INVENTORY,包含 4 列,COL1、COL2、COL3 和 File_Name。表中没有任何日期列。但 File_Name 列将始终包含 ABC_03_20180412_053028.txt 格式的数据。(ABC_03_YYYYMMDD_HHMMSS.txt)。我想知道如何使用文件名中的日期和时间来获取过去 24 小时内收到的表的记录。

标签: sql

解决方案


您将提取字符串并转换为日期。这取决于数据库,但我猜你正在使用 MySQL。如果,你可以str_to_date()这样使用:

str_to_date(substring(filename, 7, 15), '%Y%m%d_%h%i%s')

最近 24 小时的比较是:

str_to_date(substring(filename, 7, 15), '%Y%m%d_%h%i%s') >= now() - interval 24 hour and
str_to_date(substring(filename, 7, 15), '%Y%m%d_%h%i%s') < now()

第二部分可能不是必需的,因为文件可能没有未来的日期。


推荐阅读