Mysql 获取昨日、今日、明日凌晨时间

# 获取今日凌晨时间
UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE))
# 获取昨日凌晨时间
UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY)
# 获取明日凌晨时间
UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) + INTERVAL 1 DAY)
# 获取的是时间戳

# 时间戳转换成datetime, datetime也就是我们说的日期格式 年-月-日 时-分-秒
FROM_UNIXTIME();
# datetime转时间戳
UNIX_TIMESTAMP();

# 测试
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE))) 今日;
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY)) 昨日;
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) + INTERVAL 1 DAY)) 明日;

# 结果:
2019-10-06 00:00:00 // 今日
2019-10-05 00:00:00 // 昨日
2019-10-07 00:00:00 // 明日

# 可看出 + INTERVAL 1 DAY 可自己随意修改


# DATE_FORMAT(datetime ,format)用法,转换日期格式
DATE_FORMAT('2019-10-07 00:00:00', '%Y-%c-%d');
# 结果:
2019-10-07 // DATE_FORMAT之后的结果

# 常用的:
# '%Y-%c-%d %H:%i:%S'  
#  年-月-日  时:分:秒
# '%Y-%c-%d'
#  年-月-日
# '%H:%i:%S'
#  时:分:秒
# 自己随意取舍

# 下面7点来自 : https://www.jb51.net/article/132425.htm

1、当前日期
select DATE_SUB(curdate(), INTERVAL 0 DAY) ;

2、明天日期
select DATE_SUB(curdate(), INTERVAL -1 DAY) ;

3、昨天日期
select DATE_SUB(curdate(), INTERVAL 1 DAY) ;

4、前一个小时时间
select date_sub(now(), interval 1 hour);

5、后一个小时时间
select date_sub(now(), interval -1 hour);

6、前30分钟时间
select date_add(now(), interval -30 minute)

7、后30分钟时间
select date_add(now(), interval 30 minute)


  • 时间格式表,时间格式表参照的 https://www.jianshu.com/p/593ace0424ff
格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
发布了76 篇原创文章 · 获赞 47 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_40058321/article/details/102224125