sql 类型(mysql5.5)

时间类型(单位:字节):

DATETIME 8

是占用空间最多的一种类型(年月日时分秒)

1000-01-0100:00:00”到“9999-12-31 23:59:59”

 

DATE 3

可显示的日期范围为“1000-01-01”到“9999-12-31”


TIMESTAMP 4

显示的范围为“1970-01-0100:00:00”UTC到“2038-01-19 03:14:07”UTC。其实际存储的内容为“1970-01-0100:00:00”到当前时间的毫秒数。 

(年月日时分秒)

总结:datetime 和 timestamp 都表示年月日时分秒。datetime 日期范围 与date相同

附:timestamp 可以在创建与更新的时候设置初始值

CREATE TABLE `news` (
  `counts` int(255) DEFAULT NULL,
  `dates` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE t1(
	flag INT, b TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
UPDATE t1 SET flag = 2

YEAR类型占用1字节,并且在定义时可以指定显示的宽度为YEAR(4)或YEAR(2)

对于YEAR(4),其显示年份的范围为1901~2155;对于YEAR(2),其显示年份的范围为1970~2070。在YEAR(2)的设置下,00~69代表2000~2069年。

TIME类型占用3字节,显示的范围为“-838:59:59”~“838:59:59”。有人会奇怪为什么TIME类型的时间可以大于23。因为TIME类型不仅可以用来保存一天中的时间,也可以用来保存时间间隔,同时这也解释了为什么TIME类型也可以存在负值。和DATETIME类型一样,TIME类型同样可以显示微秒时间,但是在插入时,数据库同样会进行截断操作。

时间操作函数:

1)当前时间:

CURRENT_TIMESTAMP是NOW的同义词

SYSDATE函数返回的是执行到当前函数时的时间

2)时间加减:

SELECT NOW() as now,
DATE_ADD(NOW(),INTERVAL 1 DAY) AS tomorrow,
DATE_SUB(NOW(),INTERVAL 1 DAY) AS yesterday;

附:INTERVAL x YEAR 支持对闰月的操作,在上面的例子中使用了DAY和YEAR数据类型,其实也可以使用MICROSECOND、SECOND、MINUTE、HOUR、WEEK、MONTH等类型。

3)dateformat 函数
 

SELECT DATE_FORMAT(NOW(),'%y-%m--%d') as datetime

附:一般来说表中都会有一个对日期类型的索引,如果使用上述的语句,优化器绝对不会使用索引,也不可能通过索引来查询数据,因此上述查询的执行效率可能非常低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值