mysql 时间格式

这篇博客介绍了MySQL中str_to_date()和date_format()两个函数的使用,用于实现字符串到时间的转换及时间到字符串的格式化。讨论了MySQL日期格式化(format)的多种取值范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

str_to_date(str,format):字符串转时间

select str_to_date('2018-02-23 15:01:51', '%Y-%m-%d %H:%i:%s') date;

date_format(date,format):时间转字符串

select date_format(now(), '%Y-%m-%d') str;

MySQL 日期格式化(format)的取值范围:

 

含义

%S、%s

两位数字形式的秒( 00,01, ..., 59)

%i

两位数字形式的分( 00,01, ..., 59)

小时 

%H

24小时制,两位数形式小时(00,01, ...,23)

%h

12小时制,两位数形式小时(00,01, ...,12)

%k

24小时制,数形式小时(0,1, ...,23)

%l

12小时制,数形式小时(0,1, ...,12)

%T

24小时制,时间形式(HH:mm:ss)

%r

 12小时制,时间形式(hh:mm:ss AM 或 PM)

%p 

AM上午或PM下午 

周 

 %W

一周中每一天的名称(Sunday,Monday, ...,Saturday)

 %a

一周中每一天名称的缩写(Sun,Mon, ...,Sat) 

%w 

以数字形式标识周(0=Sunday,1=Monday, ...,6=Saturday) 

%U

数字表示周数,星期天为周中第一天

%u

数字表示周数,星期一为周中第一天

%d 

两位数字表示月中天数(01,02, ...,31)

%e 

 数字表示月中天数(1,2, ...,31)

 %D

英文后缀表示月中天数(1st,2nd,3rd ...) 

 %j

以三位数字表示年中天数(001,002, ...,366) 

%M 

英文月名(January,February, ...,December) 

%b 

英文缩写月名(Jan,Feb, ...,Dec) 

%m 

两位数字表示月份(01,02, ...,12)

%c 

数字表示月份(1,2, ...,12) 

%Y 

四位数字表示的年份(2015,2016...)

%y 

 两位数字表示的年份(15,16...)

文字输出 

%文字 

直接输出文字内容

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/qq_28061489/article/details/79353786

### MySQL 日期格式化函数 `DATE_FORMAT()` 使用方法 `DATE_FORMAT()` 是 MySQL 提供的一个用于格式化日期的函数,能够将日期转换为指定格式的字符串。该函数的第一个参数是一个表示日期或时间的值,第二个参数是定义输出格式的模式串。 #### 基本语法 以下是 `DATE_FORMAT()` 的基本语法: ```sql DATE_FORMAT(date, format) ``` - **date**: 要格式化的日期或时间值。 - **format**: 定义输出格式的模式串,由一系列占位符组成。 #### 占位符说明 以下是一些常用的占位符及其含义[^1]: | 占位符 | 描述 | |--------|--------------------------| | `%Y` | 份,四位数 | | `%y` | 份,两位数 | | `%m` | 数字形式的月份 | | `%c` | 不带前导零的月份 | | `%M` | 文本形式的月份名 | | `%d` | 带前导零的天 | | `%e` | 不带前导零的天 | 例如,要将日期格式化为“YYYY-MM-DD”的标准格式,可以使用如下语句: ```sql SELECT DATE_FORMAT('2023-10-05', '%Y-%m-%d'); -- 输出: '2023-10-05' ``` 如果希望显示更详细的日期信息,如星期几,则可加入更多占位符: ```sql SELECT DATE_FORMAT('2023-10-05', '%W %D of %M %Y'); -- 输出: 'Thursday 5th of October 2023' ``` #### 结合 GROUP BY 子句进行汇总统计 除了简单的日期格式化外,还可以利用 `DATE_FORMAT()` 配合 `GROUP BY` 实现按月或按周的数据汇总统计[^2]。例如: ##### 按月份汇总销售记录 假设有一张名为 `sales` 的表,包含字段 `sale_date` 和 `amount`,可以通过以下查询按月份汇总销售额: ```sql SELECT DATE_FORMAT(sale_date, '%Y-%m') AS month, SUM(amount) AS total_sales FROM sales GROUP BY month; ``` ##### 按周汇总访问量 对于一张存储网站访问记录的表 `visits`,可通过以下方式按周统计总访问次数: ```sql SELECT DATE_FORMAT(visit_time, '%Y-W%u') AS week, COUNT(*) AS visits_count FROM visits GROUP BY week; ``` #### 其他常用日期时间函数 除了 `DATE_FORMAT()` 外,MySQL 还提供了一些辅助函数来处理日期和时间数据[^4]: - `NOW()`: 获取当前日期和时间。 - `CURDATE()`: 返回当前日期部分。 - `CURTIME()`: 返回当前时间部分。 - `DATEDIFF(date1, date2)`: 计算两个日期之间的差异(单位为天)。 例如,计算今天距离某个特定日期的时间间隔: ```sql SELECT DATEDIFF(NOW(), '2023-01-01'); ``` --- ### 注意事项 1. 如果输入的日期不符合预期格式,可能会导致错误结果或返回 NULL。因此,在实际应用中应确保传入合法的日期值[^3]。 2. 格式化后的结果始终是以字符串的形式呈现,后续操作需注意类型匹配问题。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值