mysql--SQL编程(关于mysql中的日期) 学习笔记2
一.mysql数据库中的date
1.DATETIME和DATE:
DATETIME占用8个字节,日期范围为"1000-01-01 00:00:00"到"9999-12-31 23:59:59"
DATE占用3个字节,日期范围为"1000-01-01"到"9999-12-31"
mysql的CAST函数在强制转换到DATETIME时会保留到微秒数,不过在插入后同样会截断.
e.g.
select cast('2013-02-11 00:22:33' as datetime) D\G*************************** 1. row *************************** D: 2013-02-11 00:22:33 1 row in set (0.00 sec)mysql> insert into date -> select cast('2013-12-06 21:18:33' as datetime);Query OK, 1 row affected (0.04 sec) Records: 1 Duplicates: 0 Warnings: 0type_name(fsp) TIME.DATETIME.TIMESTAMP select CURTIME(4) AS TIME\G *************************** 1. row *************************** TIME: 22:02:38 1 row in set (0.01 sec)
2.TIMESTAMP
UTC:世界统一时间,由英文(COordinated Universal Time)和法文(Temps Universal Cordonne')而来
TIMESTAMP和DATETIME格式是一样的,均为"YYYY-MM-DD HH:MM:SS";
区别是:
1).TIMESTAMP占用4个字节,显示为"1970-01-01 00:00:00" UTC到"2038-01-19 03:14:07" UTC,而DATETIME占用8个字节,日期范围为"1000-01-01 00:00:00"到"9999-12-31 23:59:59"
2).在建表进可以为TIMESTAMP建一个默认值,而DATETIME不行.
3).在更新表时,可以设置TIMESTAMP类型的列自动更新时间为当前时间.
eg.1:
mysql> create table s_timestamp -> ( a INT, -> b timestamp default current_timestamp -> )engine=innodb -> ; Query OK, 0 rows affected (0.16 sec)mysql> desc s_timestamp; +-------+-----------+------+-----+-------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+-------------------+-------+ | a | int(11) | YES | | NULL | | | b | timestamp | NO | | CURRENT_TIMESTAMP | | +-------+-----------+------+-----+-------------------+-------+ 2 rows in set (0.00 sec)mysql> insert into s_timestamp (a) values (1); Query OK, 1 row affected (0.04 sec)mysql> select * from s_timestamp; +------+---------------------+ | a | b | +------+---------------------+ | 1 | 2013-12-07 22:23:35 | +------+---------------------+ 1 row in set (0.00 sec)
再来新建一个时间随着更改值时自动更新的:
create table s_timestamp2(a INT, b timestamp default on update current_timestamp) Engine=InnoDB; mysql> insert into s_timestamp2 (a) values (1);
Query OK, 1 row affected (0.05 sec)
mysql> select * from s_timestamp2; +------+---------------------+ | a | b | +------+---------------------+ | 1 | 2013-12-07 22:30:13 | +------+---------------------+ 1 row in set (0.00 sec)mysql> update s_timestamp2 set a=2; Query OK, 1 row affected (0.07 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from s_timestamp2; +------+---------------------+ | a | b | +------+---------------------+ | 2 | 2013-12-07 22:31:39 | +------+---------------------+ 1 row in set (0.00 sec)
3.YEAR和TIME
1)YEAR类型战胜1个字节,并且在定义时可以指定显示的宽度为YEAR(4)或YEAR(2);
mysql> create table s_year( -> a year(2)) engine=innodb;mysql> desc s_year; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | a | year(2) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.01 sec)mysql> select * from s_year; +------+ | a | +------+ | 13 | +------+ 1 row in set (0.00 sec)
对于year(4)日期范围为1970-2070,year(2)中00-69代表2000-2069年.
2)TIME占用3个字节,显示的范围为-838:59:59 ---- 838:59:59因为,TIME类型不仅可以用来保存一天中的时间,也可以用来保存时间间隔,所以time可以为负值和最大值大于23作出解释.TIME类型同样可以显示微秒时间,但是在插入时,数据库同样会进行截断.
eg:
mysql> create table s_time (a TIME)ENGINE=InnoDB; Query OK, 0 rows affected (0.12 sec)mysql> desc s_time; +-------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-----+---------+-------+ | a | time | YES | | NULL | | +-------+------+------+-----+---------+-------+ 1 row in set (0.00 sec) mysql> insert into s_time select '22:49:33' mysql> select * from s_time; +----------+ | a | +----------+ | 22:49:33 | +----------+ 1 row in set (0.00 sec)
二.与日期和时间相关的函数
1.now(),current_timestamp(),sysdate(),表示当前时间的函数
mysql> select now(),current_timestamp(),sysdate() \G *************************** 1. row *************************** now(): 2013-12-07 22:53:21 current_timestamp(): 2013-12-07 22:53:21 sysdate(): 2013-12-07 22:53:21 1 row in set (0.00 sec)mysql> select now(), current_timestamp(), sysdate(), sleep(3), now(), current_timestamp(), sysdate() \G *************************** 1. row *************************** now(): 2013-12-07 23:02:33 current_timestamp(): 2013-12-07 23:02:33 sysdate(): 2013-12-07 23:02:33 sleep(3): 0 now(): 2013-12-07 23:02:33 current_timestamp(): 2013-12-07 23:02:33 sysdate(): 2013-12-07 23:02:36 1 row in set (3.00 sec)
由上述例子可以看出,now()和current_timestamp()函数是同义的,即作用是相同的,都是sql语句开始执行时的时间,而sysdate()函数则表示sql语句执行到当前函数的时间.
2.时间加减函数
DATE_ADD(date,INTERVAL expr unit),DATE_SUB(date,INTERVAL expr unit),其中expr的值可以为负值,所以可以用date_add()函数来执行时间相减。
mysql> select now() as now ,date_add(now(),interval 1 day) as tomrrow, date_sub(now(),interval 1 day ) as yseterday ; +---------------------+---------------------+---------------------+ | now | tomrrow | yseterday | +---------------------+---------------------+---------------------+ | 2013-12-07 23:09:52 | 2013-12-08 23:09:52 | 2013-12-06 23:09:52 | +---------------------+---------------------+---------------------+ 1 row in set (0.00 sec)mysql> select date_add(now(),interval -1 day) as yesterday \G *************************** 1. row *************************** yesterday: 2013-12-06 23:13:30 1 row in set (0.00 sec)
如果是闰月mysql会自动判别月份日期,闰月,那么就有2.29,否则就没有,看下面例子
mysql> select date_add('2000-2-29',interval 4 year) as 4_year \G *************************** 1. row *************************** 4_year: 2004-02-29 1 row in set (0.00 sec)mysql> select date_add('2000-2-29',interval 3 year) as 4_year \G *************************** 1. row *************************** 4_year: 2003-02-28 1 row in set (0.00 sec) INTERVAL expr unit也可以是hour,second,minute,week,month,microsecond等时间单位 mysql> select date_add(now(),interval 10 minute) as min \G *************************** 1. row *************************** min: 2013-12-07 23:32:56 1 row in set (0.00 sec)
3.Date_Format函数
按照用户的需求来打印日期
mysql> select date_format(now(),'%Y-%m%d') as datetime; +-----------+ | datetime | +-----------+ | 2013-1207 | +-----------+ 1 row in set (0.00 sec)
mysql--SQL编程(关于mysql中的日期) 学习笔记2相关推荐
- <SQL编程工具MySQL、SQLyog安装及环境配置教程>——《SQL》
目录 1.MySQL安装: 1.1 MySQL下载安装: 1.2 MySQL环境变量配置: 2.SQLyog安装: 2.1 SQLyog下载安装: 3.写在最后的话: 后记:●由于作者水平有限,文章难 ...
- mysql slow queries,检查 mysql sql 效能使用 MySQL Slow Queries
检查 mysql sql 效能使用 MySQL Slow Queries 点击: 发布日期:2013-05-06 本文来自 www.020fix.com 由于 MySQL 的普及,我们不难发现有许多 ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十六
<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包括:宏变量.宏函数.宏参数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-to ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十九
继续<SAS编程与数据挖掘商业案例>学习笔记,本文侧重数据处理实践,包括:HASH对象.自定义format.以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码 ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十四
继续<SAS编程与数据挖掘商业案例>学习笔记系列,本次重点:常用全程语句 所谓全程语句,是指可以用在任何地方的sas语句,既可以用在data数据步语句里面,也可以用在proc过程步里面,甚 ...
- 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记
让多核CPU占用率曲线听你指挥--<编程之美>1.1学习笔记 Problem: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.有以下几种情况: ...
- linux编程 —— shell编程脚本常用语法总结 【学习笔记】
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...
- 怎么传日期参数_时间序列amp;日期学习笔记大全(下)
作者:湛林 来源:凹凸数据 时间序列&日期学习笔记大全(上) 建议收藏 9. 日期 时间的组成 dt.方法,具体参数及含义详见附件 # 可以通过s.dt.time 获得各种信息s.dt.yea ...
- Python中索引的学习笔记
1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...
最新文章
- 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY14-概率图模型
- C Primer Plus_第8章_字符输入输出和输入确认_编程练习
- dos命令在vba中应用
- 深度学习《各种归一化的区别》
- Zookeeper可视化工具PrettyZoo
- 拓端tecdat|R语言时变波动率和ARCH,GARCH,GARCH-in-mean模型分析股市收益率时间序列
- x86架构PC机系统总线概述
- C++ Reference: Standard C++ Library reference: C Library: cfenv: FE_INEXACT
- linux系统双显卡切换显卡驱动,Ubuntu 14.04 安装 Nvidia 私有驱动并进行双显卡切换...
- mysql连接字符串_[MySQL] - MySQL连接字符串总结
- 4.3.1 求绝对值
- 云上印尼:“数”影婆娑的千岛之国
- 【AICG】动漫女主AI绘图的学习笔记
- web3j错误解决:okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody
- 【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
- android 设备序列号_如何查找您的Android设备的序列号
- 日本用计算机模拟核试验,法国:将用超级计算机模拟核试验
- Java发送网易企业邮箱邮件
- 程序员鄙视链! | 每日趣闻
- python+untitest+request实现接口自动化测试
热门文章
- poj 2063 Investmen 完全背包
- 第二阶段个人总结1(5.25)
- [原] insert into … on duplicate key update / replace into 多行数据
- Hyperledger Fabric学习笔记(二)- Fabric 2.2.1环境搭建
- ngrok工具的介绍与使用,以及使用此工具时注意的事项
- Day12-流Stream
- 确定不进来看看?分享一个插件,让敲代码不再枯燥,activate-power-mode
- RancherOS v1.5.0发布
- AutoIt Windows的自动化脚本
- vue练习之vue+cnode api