MySQL日期格式及日期函数实践

目录

日期格式

日期函数

  1. CURDATE()和CURRENT_DATE()
  2. CURTIME()和CURRENT_TIME()
  3. NOW()和CURRENT_TIMESTAMP()
  4. DATE_FORMAT()
  5. DATE_ADD()和DATE_SUB()
  6. DATEDIFF()
  7. DATE()
  8. DAYNAME()和MONTHNAME()
  1. 日期格式

在MySQL中,日期可以使用多种格式进行存储和表示。常见的日期格式包括:

  1. DATE:仅包含日期部分,格式为'YYYY-MM-DD',例如'2023-07-06'。
  2. TIME:仅包含时间部分,格式为'HH:MM:SS',例如'13:30:45'。
  3. DATETIME:包含日期和时间部分,格式为'YYYY-MM-DD HH:MM:SS',例如'2023-07-06 13:30:45'。
  4. TIMESTAMP:包含日期和时间部分,格式为'YYYY-MM-DD HH:MM:SS',与DATETIME相似,但在存储和使用上有一些差异。

在实际使用中,可以根据需求选择合适的日期格式进行存储和处理。
2. 日期函数

MySQL提供了丰富的日期函数,用于对日期进行各种操作和计算。下面介绍一些常用的日期函数:

CURDATE()和CURRENT_DATE()

CURDATE()和CURRENT_DATE()函数返回当前日期。它们的使用方式相同,可以直接调用这两个函数获取当前日期。

sql 复制代码
SELECT CURDATE(); -- 返回当前日期,例如'2023-08-29'
SELECT CURRENT_DATE(); -- 返回当前日期,例如'2023-08-29'

CURTIME()和CURRENT_TIME()

CURTIME()CURRENT_TIME()函数返回当前时间。它们的使用方式相同,可以直接调用这两个函数获取当前时间。

sql 复制代码
SELECT CURTIME(); -- 返回当前时间,例如'11:12:12'
SELECT CURRENT_TIME(); -- 返回当前时间,例如'11:12:12'

NOW()和CURRENT_TIMESTAMP()

NOW()CURRENT_TIMESTAMP()函数返回当前日期和时间。它们的使用方式相同,可以直接调用这两个函数获取当前日期和时间。

sql 复制代码
SELECT NOW(); -- 返回当前日期和时间,例如'2023-08-29 11:26:27'
SELECT CURRENT_TIMESTAMP(); -- 返回当前日期和时间,例如'2023-08-29 11:26:27

DATE_FORMAT()

DATE_FORMAT()函数用于将日期按照指定的格式进行格式化。可以使用不同的格式化符号来表示年、月、日、小时、分钟、秒等。

DATE_ADD()和DATE_SUB()

DATE_ADD()DATE_SUB()函数用于对日期进行加减操作。可以指定要加减的日期部分(年、月、日等)和相应的值。

sql 复制代码
SELECT DATE_ADD(NOW(), INTERVAL 2 DAY); -- 当前日期加2天
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 当前日期减1个月

DATEDIFF()

DATEDIFF()函数用于计算两个日期之间的天数差。

sql 复制代码
SELECT DATEDIFF('2023-08-29', '2023-08-08'); -- 计算两个日期之间的天数差,结果为21

DATE()

DATE()函数用于提取日期部分。

sql 复制代码
SELECT DATE(NOW()); -- 提取当前日期部分,例如'2023-08-29'

DAYNAME()和MONTHNAME()

DAYNAME()MONTHNAME()函数用于获取日期的星期和月份名称。

sql 复制代码
SELECT DAYNAME(NOW()); -- 获取日期的星期名称,例如'Tuesday'
SELECT MONTHNAME(NOW()); -- 获取日期的月份名称,例如'August'

下面是使用Java和MySQL进行日期操作的示例代码:

java 复制代码
package com.linxinbao.controller;


import java.sql.*;
import java.text.SimpleDateFormat;

public class DateExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/database";
        String username = "root";
        String password = "password";
        try {
            // 连接数据库
            Connection connection = DriverManager.getConnection(url, username, password);

            // 获取当前日期
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT CURDATE()");
            if (resultSet.next()) {
                Date currentDate = resultSet.getDate(1);
                System.out.println("Current date: " + currentDate);
            }

            // 格式化日期
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String formattedDate = dateFormat.format(new java.util.Date());
            System.out.println("Formatted date: " + formattedDate);

            // 关闭连接
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
TDengine (老段)22 分钟前
TDengine 常见问题 TOP7
大数据·数据库·时序数据库·常见问题·tdengine·涛思数据
+VX:Fegn089526 分钟前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
mysqloffice1 小时前
数智时代,核心系统数据库架构往哪走
数据库·人工智能
l1t1 小时前
DeepSeek总结的 pgColumnar 1.0-alpha4 发布说明
数据库·postgresql
DBA_G1 小时前
南大通用GBase 8s数据库助力某农商行核心系统投产
数据库
工业涂料百问2 小时前
【环保合规】系列(四)工业涂料碳足迹怎么算?边界定义、因子选择与减排优先级拆解
数据库
wuyk5553 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
文人sec3 小时前
grant 之后要跟着 flush privileges 吗?要不要使用分区表?
数据库·mysql·adb·数据分析
高级程序源3 小时前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计
后端·python·mysql·小程序·django·flask·课程设计
Omics Pro3 小时前
上海AI Lab孙思琦×高张阳:虚拟细胞代码库智能体
数据库·人工智能·算法·机器学习·自然语言处理