SQL 时间函数整理的比较全了
在数据库开发中,时间函数是处理日期和时间数据的重要工具。无论是在查询中过滤数据,还是在计算中使用时间戳,掌握这些函数都能极大地提升效率。本文将对 SQL 中常用的时间函数进行全面整理,帮助开发者快速上手并熟练运用。
1. 获取当前时间
- NOW()
返回当前的日期和时间。
```sql
SELECT NOW();
```
- CURRENT_TIMESTAMP
功能与 `NOW()` 相同。
```sql
SELECT CURRENT_TIMESTAMP;
```
2. 格式化日期
- DATE_FORMAT()
按指定格式输出日期。
```sql
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_date;
```
支持的格式符包括:
- `%Y`:四位年份
- `%m`:两位月份
- `%d`:两位日期
- `%H`:小时(24小时制)
- `%i`:分钟
- `%s`:秒
3. 提取日期部分
- CURDATE() 或 CURRENT_DATE
返回当前日期。
```sql
SELECT CURDATE();
```
- DATE()
提取日期部分。
```sql
SELECT DATE(NOW());
```
4. 提取时间部分
- TIME()
提取时间部分。
```sql
SELECT TIME(NOW());
```
5. 时间差计算
- TIMESTAMPDIFF()
计算两个日期之间的差值。
```sql
SELECT TIMESTAMPDIFF(YEAR, '2000-01-01', CURDATE()) AS years_diff;
```
支持的单位包括:
- `YEAR`
- `MONTH`
- `DAY`
- `HOUR`
- `MINUTE`
- `SECOND`
6. 日期加减操作
- DATE_ADD() 和 DATE_SUB()
分别用于日期的加法和减法操作。
```sql
SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY) AS future_date;
SELECT DATE_SUB(CURDATE(), INTERVAL 3 MONTH) AS past_date;
```
7. 时间戳转换
- UNIX_TIMESTAMP()
将日期时间转换为 Unix 时间戳。
```sql
SELECT UNIX_TIMESTAMP(NOW()) AS timestamp_value;
```
- FROM_UNIXTIME()
将 Unix 时间戳转换为日期时间。
```sql
SELECT FROM_UNIXTIME(1609459200) AS datetime_value;
```
8. 日期比较
- DATEDIFF()
计算两个日期之间的天数差。
```sql
SELECT DATEDIFF('2023-12-31', '2023-01-01') AS days_diff;
```
9. 周、月、季度提取
- WEEK()
提取当前日期所在的周数。
```sql
SELECT WEEK(CURDATE()) AS week_number;
```
- QUARTER()
提取当前日期所在的季度。
```sql
SELECT QUARTER(CURDATE()) AS quarter_number;
```
通过以上整理,我们可以看到 SQL 提供了丰富的日期和时间处理功能。熟练掌握这些函数不仅能够优化查询性能,还能让数据处理更加灵活高效。希望本文能成为您学习 SQL 时间函数的实用指南!
希望这篇文章能满足您的需求!如果还有其他问题或需要进一步扩展,请随时告知。