MySQL|MySQL 中 `DATE_FORMAT()` 函数的使用

文章目录
概述

DATE_FORMAT() 是 MySQL 中的一个内置函数,用于格式化日期和时间数据。它可以根据指定的格式字符串来展示日期和时间,使得数据更容易阅读和理解。本文档将详细介绍 DATE_FORMAT() 函数的使用方法及其常见应用场景。

方法签名
复制代码
DATE_FORMAT(date, format)
  • 参数 :
    • date: 日期或时间的表达式,可以是一个日期时间字段或常量。
    • format: 格式化字符串,用于定义日期和时间的具体格式。
格式化字符

DATE_FORMAT() 支持多种格式化字符,这些字符定义了日期和时间的不同部分。以下是一些常用的格式化字符:

格式化字符

描述

%Y

年份,4位数字(例如:2024)

%y

年份,2位数字(例如:24)

%m

月份,2位数字(例如:09)

%b

月份的缩写(例如:Sep)

%M

月份的全称(例如:September)

%d

日,2位数字(例如:18)

%H

小时(24小时制),2位数字(例如:16)

%h 或 %I

小时(12小时制),2位数字(例如:04)

%i

分钟,2位数字(例如:26)

%s

秒,2位数字(例如:42)

%p

AM 或 PM(仅限于12小时制)

%W

星期几的全称(例如:Wednesday)

%w

星期几,数字表示(例如:3 表示星期三)

%j

一年中的第几天(1 到 366)

%U

一年中的第几周(00 到 53)

%u

一年中的第几周(01 到 53)

基本用法

假设有一个名为 orders 的表,其中有一个 created_at 的字段,存储了订单创建的时间戳。下面是如何使用 DATE_FORMAT() 函数来格式化这个时间戳的例子:

复制代码
SELECT 
    created_at,
    DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') AS formatted_date
FROM orders;

上述查询将返回 created_at 列,并将每个日期时间值格式化为 "YYYY-MM-DD HH:MM:SS" 格式。

实际应用案例
示例1:显示日期和星期几

假设你需要查询订单创建日期及其对应的星期几:

复制代码
SELECT 
    created_at,
    DATE_FORMAT(created_at, '%Y-%m-%d %W') AS formatted_date_and_weekday
FROM orders;
示例2:仅显示日期

如果只需要日期部分,可以使用以下格式:

复制代码
SELECT 
    DATE_FORMAT(created_at, '%Y-%m-%d') AS date_only
FROM orders;
示例3:按周统计订单数量

可以使用 DATE_FORMAT() 函数来获取订单创建的周数,并进行统计:

复制代码
SELECT 
    DATE_FORMAT(created_at, '%x-%v') AS week,
    COUNT(*) AS order_count
FROM orders
GROUP BY week;

这里 %x 表示年份的最后两位,%v 表示一年中的第几周。

注意事项
  • 在使用 DATE_FORMAT() 时,请确保提供的日期时间是有效的。如果日期时间无效,可能会导致错误或不符合预期的结果。
  • DATE_FORMAT() 的格式化字符串区分大小写,不同的格式化字符具有不同的含义。
  • 在设计数据库查询时,考虑到性能因素,如果频繁使用 DATE_FORMAT(),建议考虑使用索引或其他优化手段。
结论

DATE_FORMAT() 函数是 MySQL 中一个非常实用的功能,可以帮助开发者以可定制的方式展示日期和时间数据。通过掌握 DATE_FORMAT() 的使用方法及其格式化字符,可以更灵活地处理和展示时间相关数据。

相关推荐
聚美智数1 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
瀚高PG实验室1 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
ben9518chen2 小时前
mysql数据库基本操作
数据库·mysql
2603_965148112 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe2 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新3 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
Web3&Basketball4 小时前
实测Gemini4Argon:ERQA 87%登顶长程任务榜
数据库·python·大模型·多模态·gemini·长上下文·推理优化
xiaogai_gai5 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
注塑机数据采集联网5 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析
像风一样自由20205 小时前
56.实战PostgreSQL-pgvector-FastAPI构建轻量级RAG
数据库·人工智能·postgresql·大模型·fastapi·智能体