mysql中时间问题转换和计算

如何获取当前时间

Select curtime();

Select curdate()

select current_date();

SELECT CURRENT_TIMESTAMP();                      

SELECT NOW();

sELECT LOCALTIME();

sELECT LOCALTIMESTAMP();

Select sysdate();

获取当前时间戳

select unix_timestamp();

  1. Msyql时间类型

MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp

数据类型         占用字节         最小值                       最大值                                          零值表示

date                   4                1000-01-01                       9999-12-31                          0000-00-00

datetime           8            1000-01-01 00:00:00     9999-12-31 23:59:59        0000-00-00 00:00:00

timestamp           4               19700101080001           2038年的某个时刻        0000000000000000

time                   3                -838:59:59                        838:59:59                            00:00:00

year                    1                1901                                   2155                                     0000

注意:timestamp不是真正意义上的时间戳

总结:date :只有日期没有时间

         Datetime 有日期,有时间

         Timestamp 有日期,有时间精确到秒

         Time  有时间没有日期,

         Year 只有年
2.  日期时间类型格式化  

    1. Date_format函数
  1. 简介

DATE_FORMAT(date,format);

              Date:是要格式化的日期有效值

              Formate: 是由预定义的说明符组成的格式字符串,每个说明符前面都有一个百分比字符(%)

             

%a

三个字符缩写的工作日名称,例如:MonTueWed,等

%b

三个字符缩写的月份名称,例如:JanFebMar

%c

以数字表示的月份值,例如:1, 2, 3…12

%D

英文后缀如:0th1st2nd等的一个月之中的第几天

%d

如果是1个数字(小于10),那么一个月之中的第几天表示为加前导加0, 如:00, 01,02, …31

%e

没有前导零的月份的日子,例如:1,2,… 31

%f

微秒,范围在000000..999999

%H

24小时格式的小时,前导加0,例如:00,01..23

%h

小时,12小时格式,带前导零,例如:01,02 … 12

%I

与%h相同

%i

分数为零,例如:00,01,… 59

%j

一年中的的第几天,前导为0,例如,001,002,… 366

%k

24小时格式的小时,无前导零,例如:0,1,2 … 23

%l

12小时格式的小时,无前导零,例如:0,1,2 … 12

%M

月份全名称,例如:January, February,…December

%m

具有前导零的月份名称,例如:00,01,02,… 12

%p

AM或PM,取决于其他时间说明符

%r

表示时间,12小时格式hh:mm:ss AM或PM

%S

表示秒,前导零,如:00,01,… 59

%s

与%S相同

%T

表示时间,24小时格式hh:mm:ss

%U

周的第一天是星期日,例如:00,01,02 … 53时,前导零的周数

%u

周的第一天是星期一,例如:00,01,02 … 53时,前导零的周数

%V

与%U相同,它与%X一起使用

%v

与%u相同,它与%x一起使用

%W

工作日的全称,例如:Sunday, Monday,…, Saturday

%w

工作日,以数字来表示(0 = 星期日,1 = 星期一等)

%X

周的四位数表示年份,第一天是星期日; 经常与%V一起使用

%x

周的四位数表示年份,第一天是星期日; 经常与%v一起使用

%Y

表示年份,四位数,例如2000,2001,…等。

%y

表示年份,两位数,例如00,01,…等。

%%

将百分比(%)字符添加到输出

常用函数

1函数date_format(date,format) 把时间格式化,可以理解为把时间转化成字符串

2 str_to_date(str,format) 把字符串转化成时间类型 字符串非法会返回null

3mysql时间的加减

              Date_add(date, interval 1  ‘单位’)   加法

              date_sub(date,interval expr type) 减去

              date_sub('2019-07-27', interval 30 day)表示往前推30天

4 时间戳方式计算时间差:

mysql>select unix_timestamp(str_to_date('20221212 00:00:06','%Y%m%d %H:%i:%s'))-unix_timestamp(str_to_date('20221212 00:00:01','%Y%m%d %H:%i:%s')) datestamp;                                                      +-----------+                                                                                             | datestamp |                                                                                             +-----------+                                                                                             |         5 |                                                                                             +-----------+                                                                                             1 row in set (0.00 sec)                  

5 datediff(date1,date2) 返回的时天数 ,time          diff(time1,time2)

6总结 createtime是时间字段

每日

时间戳使用 FROM_UNIXTIME(date,'%Y-%m-%d')

日期使用 DATE_FORMAT(date, '%Y-%m-%d')

每月

时间戳使用 FROM_UNIXTIME(date,'%Y-%m')

日期使用 DATE_FORMAT(date, '%Y-%m')

每季

时间戳使用 SELECT CONCAT(FROM_UNIXTIME(date, '%Y-'),QUARTER(FROM_UNIXTIME(createtime,'%Y-%m-%d'))) AS starts, COUNT(*) FROM ceshi  GROUP BY starts;

日期使用 SELECT CONCAT(DATE_FORMAT(createtime, '%Y-'),QUARTER(createtime)) AS starts, COUNT(*) FROM ceshi  GROUP BY starts;

每年

时间戳使用 FROM_UNIXTIME(createtime,'%Y')

日期使用 DATE_FORMAT(createtime, '%Y')

时间戳和时间的转换函数

From_ UNIXtime()  时间戳>时间

Unix_timestamp() 时间转时间戳

7不同类型的时间加减

period_add(P,N),  period_diff(P1,P2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值