[数据库]MYSQL基础03(日期函数)

0 2015-10-29 01:00:09

工作中对日期的处理是经常遇到的,需求可能多种多样,因此重点介绍。

1.获取当前日期select NOW()-- 结果:2015-10-28 22:41:11select NOW(),SLEEP(3),NOW()-- 结果 2015-10-28 22:43:34 0 2015-10-28 22:43:34SELECT SYSDATE(),SLEEP(3),SYSDATE()-- 结果 2015-10-28 22:46:48 0 2015-10-28 22:46:52-- NOW()是sql执行前就得到,而SYSDATE()是该函数执行时才得到,一般来说NOW()已经足够,所以更常用

2.日期格式化

DATE_FORMAT(date,format)  注: 该函数返回的是字符串类型

根据format字符串格式化date值

(在format字符串中可用标志符:

%M 月名字(January……December)

%W 星期名字(Sunday……Saturday)

%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

%Y 年, 数字, 4 位

%y 年, 数字, 2 位

%a 缩写的星期名字(Sun……Sat)

%d 月份中的天数, 数字(00……31)

%e 月份中的天数, 数字(0……31)

%m 月, 数字(01……12)

%c 月, 数字(1……12)

%b 缩写的月份名字(Jan……Dec)

%j 一年中的天数(001……366)

%H 小时(00……23)

%k 小时(0……23)

%h 小时(01……12)

%I 小时(01……12)

%l 小时(1……12)

%i 分钟, 数字(00……59)

%r 时间,12 小时(hh:mm:ss [AP]M)

%T 时间,24 小时(hh:mm:ss)

%S 秒(00……59)

%s 秒(00……59)

%p AM或PM

%w 一个星期中的天数(0=Sunday ……6=Saturday )

%U 星期(0……52), 这里星期天是星期的第一天

%u 星期(0……52), 这里星期一是星期的第一天

%% 字符% )-- 根据上面的参数,我们可以得到各种各样的日期格式,比mssql的convert函数强大太多了,以下是常用的标准日期格式SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') -- 2015-10-28SELECT DATE_FORMAT(NOW(),'%y-%m-%d') -- 15-10-28SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s') -- 2015-10-28 22:10:56

3.日期截取-- 获取日期当天是星期几(1=星期天,2=星期一....7=星期六)SELECT DAYOFWEEK(now()) -- 获取日期当天是几号 SELECT DAYOFMONTH('2015-10-28') -- 结果28-- 获取日期当天是一年中的第几天SELECT DAYOFYEAR('2015-10-28') -- 结果 301-- 获取日期的年份SELECT YEAR('2015-10-28') -- 结果 2015-- 获取日期第几季度SELECT QUARTER('2015-10-28') -- 结果 4-- 获取日期的月份SELECT MONTH('2015-10-28') -- 结果 10-- 获取日期是第几周SELECT WEEK('2015-10-28') -- 结果43 (默认星期天为一周的第一天)SELECT WEEK('2015-10-28',0) -- 结果43 (星期天为一周的第一天)SELECT WEEK('2015-10-28',1) -- 结果44 (星期一为一周的第一天)-- 获取日期的小时SELECT HOUR('2015-10-28 23:11:56') -- 结果 23-- 获取日期的分钟SELECT MINUTE('2015-10-28 23:11:56') -- 结果 11-- 获取日期的秒钟SELECT SECOND('2015-10-28 23:11:56') -- 结果 56

-- 获取日期部分

SELECT DATE('2015-10-28 23:11:56') -- 结果'2015-10-28'

-- 获取时间部分

SELECT TIME('2015-10-28 23:11:56') -- 结果'23:11:56'

4.日期运算

DATE_ADD(date,INTERVAL expr type)

[type值 含义 期望的expr格式]:

SECOND 秒 SECONDS

MINUTE 分钟 MINUTES

HOUR 时间 HOURS

DAY 天 DAYS

MONTH 月 MONTHS

YEAR 年 YEARS

MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"

DAY_HOUR 天和小时 "DAYS HOURS"

YEAR_MONTH 年和月 "YEARS-MONTHS"

HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"

DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"

DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

expr中允许任何标点做分隔符,如果所有是DATE值时结果是一个DATE值,否则结果是一个DATETIME值)

如果type关键词不完整,则MySQL从右端取值,DAY_SECOND因为缺少小时分钟等于MINUTE_SECOND)

如果增加MONTH、YEAR_MONTH或YEAR,天数大于结果月份的最大天数则使用最大天数)-- 说明 正号为加法,负号为减法-- 增加4天SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL 4 DAY ) --2015-11-01 23:11:56-- 减少3天SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL -3 DAY ) -- 2015-10-25 23:11:56-- 增加1年SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL 1 YEAR ) -- 2016-10-28 23:11:56-- 增加1天3小时SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL '1 3' DAY_HOUR ) -- 2015-10-27 20:11:56-- 减1天1小时1分1秒SELECT DATE_ADD('2015-10-28 23:11:56', INTERVAL '-1 1:1:1' DAY_SECOND) -- 2015-10-27 22:10:55

5.日期比较-- 计算2个日期间隔的天数SELECT DATEDIFF('2015-10-28','2015-10-26') -- 结果2-- 计算2个日期间隔的时分秒SELECT TIMEDIFF('2015-10-28 23:11:56','2015-10-28 20:11:56') -- 结果 03:00:00

6.日期转化-- 将日期转化为天数 (西元0年至今多少天)SELECT TO_DAYS('2015-10-28 23:11:56') -- 结果 736264SELECT TO_DAYS('0000-00-00 00:00:00') -- 结果 0-- 将日期转化为秒数 (从'1970-01-01 00:00:00'GMT开始的秒数)select UNIX_TIMESTAMP('2015-10-28 23:11:56') -- 结果 1446045116-- 将时间转化为秒数SELECT TIME_TO_SEC('01:00:05'); -- 结果 3605-- 将秒数转化为日期SELECT SEC_TO_TIME(3605); -- '01:00:05'

以上 ,参考资料:http://www.cnblogs.com/zeroone/archive/2010/05/05/1727659.html

注意问题

1. DATE_FORMAT-- 错误示例SELECT * FROM mytable WHERE create_date>=DATE_FORMAT(NOW(),'%Y-%m-%d')-- 说明: DATE_FORMAT返回的是字符串,所以不能直接与日期字段比较,这个问题我工作中已经遇到过了-- 解决办法 使用DATE,返回日期类型SELECT * FROM mytable WHERE create_date>=DATE(NOW());

功能实现-- 根据日期获取当月初与当月末SET @DATE_B:=DATE(DATE_FORMAT('2015-10-28','%Y-%m-1'));SET @DATE_E:=DATE_ADD(DATE_ADD(@DATE_B,INTERVAL 1 MONTH),INTERVAL -1 DAY);SELECT @DATE_B,@DATE_E

本文网址:http://www.shaoqun.com/a/153124.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

MYSQL

0

mysql以下日期函数正确的_[数据库]MYSQL基础03(日期函数)相关推荐

  1. mysql查出倒序第一条数据_[数据库]mysql 记录根据日期字段倒序输出

    [数据库]mysql 记录根据日期字段倒序输出 0 2016-07-21 11:00:17 我们知道倒序输出是很简单的 select * from table order by id desc 直接这 ...

  2. mysql存储过程返回多个值_数据库mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法.分享给大家供大家参考,具体如下: mysql存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程.咱们先来 ...

  3. mysql交叉表的构造知识_[数据库]MySQL交叉表

    [数据库]MySQL交叉表 0 2012-01-11 17:00:23 在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义. http:// ...

  4. mysql怎么将成绩划分等级_数据库mysql中case如何给成绩划分等级?

    在表格中如果我们要给不同分段的成绩评选等级,只需要使用筛选功能输入评定的条件即可.那么在mysql中我们该如何输出跟表格一样结果呢?这里有的小伙伴说可以用我们刚学习的case函数来尝试.但是作为最基础 ...

  5. mysql清空数据库所有表的命令_mysql清空表数据命令是什么?_数据库,mysql,清空表数据...

    mysql服务无法启动怎么解决_数据库 mysql服务无法启动的解决方法是:1.配置环境变量:2.在mysql安装目录下,新建my.ini文件,设置默认字符集.端口.存储引擎等:3.执行[mysqld ...

  6. mysql计算多少天后的日期_数据库 - mysql 计算某个时间,多少天后,多少个月后时间戳...

    数据库设计(一): 数据库设计步骤:  需求分析-------->  逻辑设计 ------------> 物理设计----------->维护优化. [1]需求分析:分析需要存储的 ...

  7. mysql中时间的储存方式_数据库 中“日期/时间”存储方式

    Access中: Access 在内部以 双精度浮点数的形式存储"日期/时间"值.每一个此类数值均包含日期和时间两部分.小数点左边的整数部分表示日期.小数点右边的小数部分表示时间. ...

  8. MySQL笔记:第11章_数据库的设计规范

    第11章_数据库的设计规范 1. 为什么需要数据库设计 2.范式 2.1范式简介 2.2范式都包括哪些 2.3 键和相关属性的概念 2.4第一范式(1st NF) 2.5 第二范式(2nd NF) 2 ...

  9. mysql基础小测试三_数据库---MySQL(三)

    一.视图 视图是一个虚拟表,是sql的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会影响到视图[i ...

最新文章

  1. 让自己的程序支持livewriter
  2. 关于把程序添加到打开方式的解决办法
  3. 全球及中国N95级医用防护口罩市场销售规模与产量需求预测报告2022版
  4. 毫无疑问的是.NET 在信创常用软件适配清单之中
  5. mybatis入门(四)之动态SQL
  6. DHCP服务开启了,为什么老是网络冲突
  7. 手把手maven的功能/安装/使用/idea集成
  8. 使用Expression实现数据的任意字段过滤(1)
  9. Strategy(策略模式)
  10. 码栈使用手册(二)---界面介绍
  11. 收藏!一文掌握数据分析知识体系
  12. [VOT7](2022CVPR) GTELT:Global Tracking via Ensemble of Local Trackers
  13. word中取消链接上一节在哪_在WORD中怎样取消与上一节相同
  14. pycharm更改运行环境
  15. Oracle Database 10g for Windows安装
  16. [编程入门]猴子吃桃的问题(JAVA解法)
  17. 批量爬取上交所上市公司报告
  18. 什么是CSM(Certified Scrum Master) 敏捷教练认证?
  19. 案例-修改-回显数据
  20. 2022年蓝桥杯C++B组题解 - 很详细

热门文章

  1. 音标,口型,舌位对照表:适合已有一定英语基础的人重新回顾音标发音,在不断的练习中让自己的发音更准确,口型更标准。...
  2. android单片机wifi通信原理,基于单片机计算机之间无线通信实现.doc
  3. linux开热点软件,在Ubuntu系统的电脑上开启无线热点全攻略,
  4. 二叉树——二叉树的深度(洛谷 P4913)
  5. php refcount,php变量引用和计数_refcount_gc和is_ref_gc
  6. 视频PPT互动问答丨数据库智能运维专题
  7. 实战分享:activemq 在灾备双活建设中的研究
  8. XEngine:深度学习模型推理优化
  9. 使用 scipy.fft 进行Fourier Transform:Python 信号处理
  10. 云小课|ModelArts Pro 视觉套件:零代码构建视觉AI应用