{"custom":[],"fixed":{"last_n_days":"select date_format(DATE_SUB(now(), INTERVAL 120 DAY),\"%Y-%m-%d %H:%i:%S\") as STARTDATE,date_format(DATE_SUB(now(), INTERVAL 1 DAY),\"%Y-%m-%d %H:%i:%S\") as ENDDATE"}}
时间: 2025-05-23 15:34:56 浏览: 21
### SQL中DATE_FORMAT和DATE_SUB函数的用法
#### DATE_FORMAT函数
`DATE_FORMAT` 是 MySQL 提供的一个用于格式化日期数据的函数。它允许开发者按照指定的格式返回日期字符串。其基本语法如下:
```sql
DATE_FORMAT(date, format)
```
其中,`date` 参数表示要格式化的日期值,而 `format` 参数则定义了输出的日期格式。
例如,如果需要提取某个特定时间戳中的年份、月份以及完整的日期时间部分,可以这样操作:
```sql
SELECT DATE_FORMAT('2022-07-04 15:10:25', '%Y-%m-%d %H:%i:%s') AS formatted_time;
-- 输出结果:2022-07-04 15:10:25 [^4]
```
另一种方式也可以通过 `%T` 来简化时间部分的显示:
```sql
SELECT DATE_FORMAT('2022-07-04 15:10:25', '%Y-%m-%d %T') AS simplified_time;
-- 输出结果同样为:2022-07-04 15:10:25 [^4]
```
#### DATE_SUB函数
`DATE_SUB` 函数主要用于从给定日期减去一定的时间间隔。它的功能可以通过以下形式表达出来:
```sql
DATE_SUB(date, INTERVAL expr unit)
```
这里,`date` 表示基础日期;`expr` 则指定了想要减少的具体数值;最后,`unit` 定义了这个数值所代表的时间单位(如天数、月份数等)。
下面是一个具体的例子来展示如何利用当前时间和一些计算逻辑共同构建复杂的查询条件:
```sql
SELECT DATE_SUB(DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d'), INTERVAL EXTRACT(DAY FROM NOW()) - 1 DAY), INTERVAL 1 MONTH);
-- 这条语句的作用是从今天的日期出发先回溯至本月第一天再往前推一个月得到的结果 [^2]
```
另外,在实际应用当中我们还经常看到这样的场景——筛选过去某段时间内的记录。比如查找最近一个月提交的企业信息列表:
```sql
SELECT name, submittime
FROM enterprise
WHERE date_format(submittime,'%Y-%m') = date_format(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m');
-- 此处运用到了两个重要概念即 CURDATE 获取今天日期以及 INTERVAL 关键字配合使用完成跨时间段的数据检索 [^3]
```
以上就是有关于SQL查询里涉及到日期格式化(`DATE_FORMAT`)及时间间隔运算(`DATE_SUB`)的一些典型用例解析说明。
阅读全文
相关推荐
















