Complete Guide to Filtering Records from the Past 24 Hours Using Timestamps in MySQL

Nov 19, 2025 · Programming · 8 views · 7.8

Keywords: MySQL | Timestamp Query | Date Functions | INTERVAL | NOW() Function

Abstract: This article provides an in-depth exploration of using MySQL's NOW() function and INTERVAL keyword to filter all records from yesterday to the future. Through detailed syntax analysis, practical application scenarios, and performance optimization recommendations, it helps developers master core techniques for datetime queries. The article includes complete code examples and solutions to common problems, suitable for various database applications requiring time range filtering.

Fundamentals of MySQL Datetime Queries

In database applications, filtering records based on timestamps is one of the most common operations. MySQL offers a rich set of datetime functions, with the combination of the NOW() function and INTERVAL keyword being particularly powerful. Using a query like SELECT * FROM FOO WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY allows precise retrieval of all records from the past 24 hours up to the current moment.

In-depth Syntax Analysis

The NOW() function returns the current date and time in the format 'YYYY-MM-DD HH:MM:SS'. When combined with the INTERVAL keyword, MySQL can perform accurate time calculations. The following code demonstrates a complete query implementation:

SELECT * FROM your_table 
WHERE date_column >= NOW() - INTERVAL 1 DAY
ORDER BY date_column DESC;

In this example, INTERVAL 1 DAY represents a one-day time interval, and MySQL automatically handles complex time calculations such as timezone conversions and leap seconds.

Analysis of Practical Application Scenarios

This query pattern has wide applications across multiple domains. In e-commerce platforms, it can be used to统计最近24小时的订单数据; in log analysis systems, it can filter system logs from specific time periods; in monitoring systems, it can retrieve performance metrics from the past day. Here is a specific application example:

-- Retrieve user login records from the past 24 hours
SELECT user_id, login_time, ip_address 
FROM user_login_log 
WHERE login_time >= NOW() - INTERVAL 1 DAY
ORDER BY login_time DESC;

Performance Optimization and Best Practices

To ensure query efficiency, it is recommended to create indexes on datetime fields. Additionally, attention should be paid to the impact of timezone settings on query results. MySQL's CONVERT_TZ() function can assist with datetime calculations across different timezones. For scenarios requiring higher precision, consider using the UNIX_TIMESTAMP() function for timestamp calculations.

Common Issues and Solutions

Developers may encounter issues such as timezone inconsistencies or indexes not taking effect. Using the EXPLAIN command to analyze query execution plans can help optimize performance. Furthermore, the DATE() function can be used to ignore the time component and filter solely by date:

SELECT * FROM table_name 
WHERE DATE(date_column) = DATE(NOW() - INTERVAL 1 DAY);

This approach is suitable for scenarios where only daily statistics are needed without concern for specific times.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.