一.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相关推荐

  1. <SQL编程工具MySQL、SQLyog安装及环境配置教程>——《SQL》

    目录 1.MySQL安装: 1.1 MySQL下载安装: 1.2 MySQL环境变量配置: 2.SQLyog安装: 2.1 SQLyog下载安装: 3.写在最后的话: 后记:●由于作者水平有限,文章难 ...

  2. mysql slow queries,检查 mysql sql 效能使用 MySQL Slow Queries

    检查 mysql sql 效能使用 MySQL Slow Queries 点击: 发布日期:2013-05-06 本文来自 www.020fix.com 由于 MySQL 的普及,我们不难发现有许多 ...

  3. 《SAS编程与数据挖掘商业案例》学习笔记之十六

    <SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包括:宏变量.宏函数.宏参数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-to ...

  4. 《SAS编程与数据挖掘商业案例》学习笔记之十九

    继续<SAS编程与数据挖掘商业案例>学习笔记,本文侧重数据处理实践,包括:HASH对象.自定义format.以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码 ...

  5. 《SAS编程与数据挖掘商业案例》学习笔记之十四

    继续<SAS编程与数据挖掘商业案例>学习笔记系列,本次重点:常用全程语句 所谓全程语句,是指可以用在任何地方的sas语句,既可以用在data数据步语句里面,也可以用在proc过程步里面,甚 ...

  6. 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记

    让多核CPU占用率曲线听你指挥--<编程之美>1.1学习笔记 Problem: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.有以下几种情况: ...

  7. linux编程 —— shell编程脚本常用语法总结 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  8. 怎么传日期参数_时间序列amp;日期学习笔记大全(下)

    作者:湛林 来源:凹凸数据 时间序列&日期学习笔记大全(上) 建议收藏 9. 日期 时间的组成 dt.方法,具体参数及含义详见附件 # 可以通过s.dt.time 获得各种信息s.dt.yea ...

  9. Python中索引的学习笔记

    1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...

最新文章

  1. 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY14-概率图模型
  2. C Primer Plus_第8章_字符输入输出和输入确认_编程练习
  3. dos命令在vba中应用
  4. 深度学习《各种归一化的区别》
  5. Zookeeper可视化工具PrettyZoo
  6. 拓端tecdat|R语言时变波动率和ARCH,GARCH,GARCH-in-mean模型分析股市收益率时间序列
  7. x86架构PC机系统总线概述
  8. C++ Reference: Standard C++ Library reference: C Library: cfenv: FE_INEXACT
  9. linux系统双显卡切换显卡驱动,Ubuntu 14.04 安装 Nvidia 私有驱动并进行双显卡切换...
  10. mysql连接字符串_[MySQL] - MySQL连接字符串总结
  11. 4.3.1 求绝对值
  12. 云上印尼:“数”影婆娑的千岛之国
  13. 【AICG】动漫女主AI绘图的学习笔记
  14. web3j错误解决:okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody
  15. 【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
  16. android 设备序列号_如何查找您的Android设备的序列号
  17. 日本用计算机模拟核试验,法国:将用超级计算机模拟核试验
  18. Java发送网易企业邮箱邮件
  19. 程序员鄙视链! | 每日趣闻
  20. python+untitest+request实现接口自动化测试

热门文章

  1. poj 2063 Investmen 完全背包
  2. 第二阶段个人总结1(5.25)
  3. [原] insert into … on duplicate key update / replace into 多行数据
  4. Hyperledger Fabric学习笔记(二)- Fabric 2.2.1环境搭建
  5. ngrok工具的介绍与使用,以及使用此工具时注意的事项
  6. Day12-流Stream
  7. 确定不进来看看?分享一个插件,让敲代码不再枯燥,activate-power-mode
  8. RancherOS v1.5.0发布
  9. AutoIt Windows的自动化脚本
  10. vue练习之vue+cnode api