SQL 查询小于本月
时间: 2025-01-31 18:15:07 浏览: 32
### 如何编写 SQL 查询以筛选日期早于本月的记录
为了筛选出日期早于当前月份的数据,可以使用 `WHERE` 子句来比较日期字段与当前月份的第一天。具体实现可以通过构建一个表示当前月份第一天的日期表达式来进行对比。
对于不同的数据库管理系统 (DBMS),获取当前月份第一天的方法可能有所不同。以下是针对几种常见 DBMS 的解决方案:
#### 对于 Oracle 数据库
```sql
SELECT *
FROM table_name
WHERE date_column < TRUNC(SYSDATE, 'MM');
```
此查询中的 `TRUNC(SYSDATE, 'MM')` 函数会截取系统当前日期到该月的第一天[^1]。
#### 对于 MySQL 和 MariaDB 数据库
```sql
SELECT *
FROM table_name
WHERE date_column < DATE_FORMAT(CURDATE(), '%Y-%m-01');
```
这里使用的 `CURDATE()` 返回今天的日期,而 `DATE_FORMAT(...)` 将其格式化为当月的第一天[^2]。
#### 对于 PostgreSQL 数据库
```sql
SELECT *
FROM table_name
WHERE date_column < DATE_TRUNC('month', CURRENT_DATE);
```
这里的 `CURRENT_DATE` 提供今天的确切日期,`DATE_TRUNC('month', ...)` 则将其调整至当月首日[^3]。
#### 对于 Microsoft SQL Server 数据库
```sql
SELECT *
FROM table_name
WHERE date_column < CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)) + '-' +
RIGHT('0' + CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR(2)), 2) + '-01';
```
这段代码通过组合年份、月份以及固定的一号字符串创建了一个代表当前月份第一天的日期值,并用于过滤条件中[^4]。
以上方法均能够有效地找出那些发生在本月初之前的所有记录。需要注意的是,在实际应用过程中应当替换掉示例里的 `table_name` 及 `date_column` 成具体的表名和列名。
阅读全文
相关推荐


















