date_format和DATE_SUB
时间: 2025-02-01 08:36:26 浏览: 51
### 正确使用 `DATE_FORMAT` 和 `DATE_SUB` 函数
#### 使用 `DATE_FORMAT`
`DATE_FORMAT` 是用于按照特定格式来展示日期或时间数据的函数。此函数接受两个参数:一个是日期表达式,另一个是指定输出样式的格式字符串。
```sql
SELECT DATE_FORMAT('2023-10-05 14:30:00', '%Y-%m-%d %H:%i:%s') AS formatted_time;
```
上述查询会将给定的时间戳转换成 "YYYY-MM-DD HH:MM:SS" 的标准格式[^1]。
对于更复杂的场景,比如只提取年份、月份或者星期几等信息:
```sql
-- 获取完整的年月日表示
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
-- 显示为“星期X”的形式
SELECT DATE_FORMAT(NOW(), '%W');
```
这些例子展示了如何利用不同的格式化选项来自定义最终呈现的结果[^2]。
#### 应用 `DATE_SUB`
另一方面,当涉及到对现有日期执行加减运算时,则可以借助于 `DATE_SUB` 函数。该函数同样接收两个主要参数——目标日期以及要从中扣除的时间间隔。
下面是一个简单的案例说明怎样从前一天获取记录:
```sql
SELECT * FROM orders WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY);
```
这段SQL语句的意思是从订单表中选取那些在过去24小时内创建的新订单条目[^3]。
如果想要计算某个月的第一天之前的一个月第一天的情况,可以通过如下方式实现:
```sql
-- 计算上一个月的第一个日子
SELECT DATE_SUB(DATE_FORMAT(LAST_DAY(NOW()), '%Y-%m-01'), INTERVAL 1 MONTH) as prev_month_start;
```
这里先用了 `LAST_DAY()` 找到当前月最后一天再设置其为月初(`%Y-%m-01`),之后通过 `DATE_SUB` 减去一个月从而获得前一月首日的信息[^4]。
---
阅读全文
相关推荐


















