Mysql查询昨天、今天、上个月、本月、上年、今年的SQL,分别进行举例 并对函数进行详细的解释
时间: 2023-12-28 10:10:16 浏览: 33
1. 查询昨天的SQL:
SELECT * FROM table_name WHERE DATE(date_column) = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
这条SQL语句使用了DATE_SUB函数,它用于从当前日期中减去指定的时间间隔。在这个例子中,我们使用了INTERVAL 1 DAY,这意味着我们要从当前日期中减去1天,以查询昨天的数据。DATE函数用于将日期列的时间戳截断为日期部分,以便与DATE_SUB函数返回的日期部分进行比较。
2. 查询今天的SQL:
SELECT * FROM table_name WHERE DATE(date_column) = CURDATE();
这条SQL语句使用CURDATE函数,它返回当前日期。我们使用它来查询今天的数据。DATE函数用于将日期列的时间戳截断为日期部分,以便与CURDATE函数返回的日期部分进行比较。
3. 查询上个月的SQL:
SELECT * FROM table_name WHERE DATE_FORMAT(date_column, '%Y-%m') = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m');
这条SQL语句使用了DATE_FORMAT函数,它用于将日期列的时间戳格式化为指定的日期格式。在这个例子中,我们使用了'%Y-%m'格式,它将日期格式化为年份和月份。我们使用了DATE_SUB函数来减去1个月的时间间隔,然后将其格式化为'%Y-%m',以便与日期列的格式进行比较。
4. 查询本月的SQL:
SELECT * FROM table_name WHERE DATE_FORMAT(date_column, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m');
这条SQL语句与上个月的SQL非常相似,但是我们没有使用DATE_SUB函数来减去时间间隔,而是直接使用NOW函数获取当前日期。我们将当前日期格式化为'%Y-%m',以便与日期列的格式进行比较。
5. 查询上年的SQL:
SELECT * FROM table_name WHERE YEAR(date_column) = YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR));
这条SQL语句使用了YEAR函数,它从日期列的时间戳中提取年份。我们使用DATE_SUB函数来减去1年的时间间隔,然后使用YEAR函数从结果中提取年份。我们将这个年份与日期列的年份进行比较,以查询上年的数据。
6. 查询今年的SQL:
SELECT * FROM table_name WHERE YEAR(date_column) = YEAR(NOW());
这条SQL语句与上年的SQL非常相似,但是我们没有使用DATE_SUB函数来减去时间间隔,而是直接使用NOW函数获取当前日期的年份。我们将这个年份与日期列的年份进行比较,以查询今年的数据。