MySQL 日期类型及默认设置

之前在用 MySQL 新建 table,创建日期类型列时遇到了一些问题,现在整理下来以供参考。

MySQL 的日期类型如何设置当前时间为其默认值?
答:请使用 timestamp 类型,且 默认值设为 now() 或 current_timestamp() 。



日期类型区别及用途

MySQL 的日期类型有5个,分别是: date、time、year、datetime、timestamp。
将在“菜鸟教程”和百度获取的资料,整理成如下表格:

类型 字节 格式 用途 是否支持设置系统默认值
date 3 YYYY-MM-DD 日期值 不支持
time 3 HH:MM:SS 时间值或持续时间 不支持
year 1 YYYY 年份 不支持
datetime 8 YYYY-MM-DD HH:MM:SS 日期和时间混合值 不支持
timestamp 4 YYYYMMDD HHMMSS 混合日期和时间,可作时间戳 支持

日期类型的 default 设置

关于 default 设置,通常情况下会使用当前时间作为默认值。
Example:

ts_time timestamp NOT NULL DEFAULT NOW();
  • 1

or

ts_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP();
  • 1

根据上表可知,除了 timestamp 类型支持系统默认值设置,其他类型都不支持。
如果建表语句中有:

ts_time1 time NOT NULL DEFAULT NOW();
ts_time3 yearNOT NULL DEFAULT NOW();
ts_time2 date NOT NULL DEFAULT CURRENT_TIMESTAMP();
ts_time2 datetime NOT NULL DEFAULT CURRENT_TIMESTAMP();
  • 1
  • 2
  • 3
  • 4

都会报错。所以想要设置某个日期列的默认值为当前时间,只能使用 timestamp 类型,并设置 DEFAULT NOW() 或 DEFAULT CURRENT_TIMESTAMP() 作为默认值。

date 类型默认值使用 current_date() 创建失败

date 类型默认值使用 now() 创建失败

date 类型默认值使用 current_timestamp() 创建失败

datetime 类型默认值使用 current_timestamp() 创建失败

datetime 类型默认值使用 now() 创建失败

timestamp 类型默认值使用 now() 创建成功

常见的日期获取函数

MySQL中有一些日期函数可供我们使用,我们可以使用 ” select 函数名() ; ” 的 sql 查看它们的返回值。同时也可以使用 “select 自定义函数名();”,调用我们自己定义的函数。
Eample:

select current_timestamp();
  • 1

select current_date();
  • 1

select current_time();
  • 1

select now();
  • 1

参照“w3School相关内容”,其他常见的日期函数如下

函数 描述
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE() 提取日期或日期/时间表达式的日期部分
EXTRACT() 返回日期/时间按的单独部分
DATE_ADD() 给日期添加指定的时间间隔
DATE_SUB() 从日期减去指定的时间间隔
DATEDIFF() 返回两个日期之间的天数
DATE_FORMAT() 用不同的格式显示日期/时间

其他的内容

更多的MySQL Date 类型或 Date 处理函数,请移步:
MySQL 数据类型 – 菜鸟教程网
SQL Date 函数 – W3School
MySQL日期时间函数大全 – zeroone

MySQL 日期类型及默认设置 (除timestamp类型外,系统不支持其它时间类型字段设置默认值)的更多相关文章

  1. C#日期时间类型格式化大全集 C#DateTime 类型格式化大全集

    日期转化一 为了达到不同的显示效果有时,我们须要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其它格式,要用到DateTime.ToString的方法(String, ...

  2. 关于mysql字段时间类型timestamp默认值为当前时间问题

    今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.00 ...

  3. mysql日期类型默认值'0000-00-00'容错处理

    mysql日期默认值'0000-00-00'惹的祸 .net连mysql数据库时,如果表里有字段是日期型且值是‘0000-00-00’时,会报错.在C#里面日期不可能是那样的.或许是最小日期定义的差别 ...

  4. MySql中的时间类型datetime,timestamp,date,year比较

    MySQL日期类型.日期格式.存储空间.日期范围比较.日期类型        存储空间       日期格式                 日期范围------------ ---------   ...

  5. Mysql 建表时,日期时间类型选择

    mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  6. MySQL学习分享-->日期时间类型

    日期时间类型 ①如果要用来表示年月日时分秒,一般使用datetime类型: ②如果要用来表示年月日,一般使用date类型: ③如果要表示时分秒,一般使用time类型: ④如果只是表示年份,一般使用ye ...

  7. MySQL之日期时间类型

    mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  8. mysql的五种日期和时间类型【转载】

    [mysql的五种日期和时间类型] mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期 ...

  9. mysql 日期时间类型

    datetime timestamp year date time drop table test;create table test (dt datetime, ts timestamp, y ye ...

随机推荐

  1. oracle主从表主外键对应关系

    一.首先让我们来了解下什么是主外键? 1.主键:唯一标识数据表中的某一行 1) 一个表中只能有一个主键.如果在其他字段上建立主键,则原来的主键就会取消.在ACCESS中,虽然主键不是必需的,但最好为每 ...

  2. Kali Liunx 2.0震撼来袭(附下载地址、新特性和更新日志)

    Kali 2.0昨天已经在BlackHat 2015 USA上正式发布了.无论是粉丝们还是Kali官方都对这个2.0版本抱有极大的期待和热情.这是第一个基于Debian Jessie的Kali版本,此 ...

  3. MyEclipse10下创建web项目并发布到Tomcat

    MyEclipse10下创建web项目并发布到Tomcat 1.软件安装(不作详细描述) 2.启动MyEclipse10 3.File-New-Project,选中Web Project,点击Next ...

  4. JQuery - Tab Control

    http://jqueryui.com/tabs/ <!doctype html> <html lang="en"> <head> <me ...

  5. jQuery -- 如何使用jQuery判断某个元素是否存在

    通常我们要判断某个元素是否存在是用: if(document.getElementById('example')) { // do something } else { // do something ...

  6. Mac锁屏快捷键

    Mac 锁屏快捷键 直接盖 -- 推荐,因为帅 control + command + Q -- 真正意义上的锁屏.可行 control + shift + Power -- 只是黑屏,再次打开不需要 ...

  7. Dlib与OpenCV图片转换

    re: 1. https://zhuanlan.zhihu.com/p/36489663 2. https://stackoverflow.com/questions/38180410/convert ...

  8. OJ链接

    BNU..好难找..http://www.bnuoj.com

  9. python functools.partial

    functools.partial 用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待 冻结部分函数位置函数或关键字参数,简化函数,更少更灵活的函数参数调用 refer ...

  10. read()/fread()/mmap()执行效率对比

    一. read()/fread()/mmap()执行效率对比 系统调用read.c: #include <sys/types.h> #include <sys/stat.h> ...