MySql建表时日期类型的出理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql建表时日期类型的出理相关的知识,希望对你有一定的参考价值。

CREATE TABLE `test`.`dinnerinfo` (
`xm` VARCHAR(20) NULL DEFAULT '姓名' ,
`daytime` TIMESTAMP NULL DEFAULT 当天时间 )
COMMENT = '订餐人员统计表'
这是我手工建表建表生成的语句,第三行出问题,请问mysql建表时如何定义一个日期类型

mysql(5.5)所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。

1.DATETIME 用于表示 年月日 时分秒,是 DATE 和 TIME 的组合,并且记录的年份比较长久。如果实际应用中有这样的需求,就可以使用 DATETIME 类型。

2.TIMESTAMP

TIMESTAMP 用于表示 年月日 时分秒,但是记录的年份比较短暂。

TIMESTAMP 和时区相关,更能反映当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到的同一时间是  不一样的。

表中的第一个 TIMESTAMP 列自动设置为系统时间(CURRENT_TIMESTAMP)。当插入或更新一行,但没有明确给 TIMESTAMP 列赋值,也会自动设置为当前系统时间。如果表中有第二个 TIMESTAMP 列,则默认值设置为0000-00-00 00:00:00。

TIMESTAMP 的属性受 Mysql 版本和服务器 SQLMode 的影响较大。

如果记录的日期需要让不同时区的人使用,最好使用 TIMESTAMP。

3.DATE

DATE 用于表示 年月日,如果实际应用值需要保存 年月日 就可以使用 DATE。

4.TIME

TIME 用于表示 时分秒,如果实际应用值需要保存 时分秒 就可以使用 TIME。

5.YEAR

YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默认是4位。如果实际应用只保存年份,那么用 1 bytes 保存 YEAR 类型完全可以。不但能够节约存储空间,还能提高表的操作效率。

    资料拓展:

每种日期时间类型都有一个有效值范围,如果超出这个范围,在默认的SQLMode下会报错,并以零值存储。

插入或更新时,日期时间类型允许“不严格”语法,以DATETIME为例(其他日期时间类型雷同):

YYYY-MM-DD HH:MM:SS 或 YY-MM-DD HH:MM:SS 格式的字符串。任何符号都可以用作日期部分或时间部分的间隔符。例如:“14-06-18 14:54:10”、“14*06*18 14.54.10”、“14+06+18 14=54=10”是等价的。对于包含日期时间的字符串值,如果月、日、时、分、秒的值小于10,不需要指定两位数。例如:“2014-2-3 2:3:6”、“2014-02-03 02:03:06”是等价的。

YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 格式的字符串。如果字符串对于日期时间类型是合法的就可以解释为日期时间类型。例如:“20140618145410” 和 “140618145410”将被解释为 “2014-06-18 14:54:10” ,但是 “20140618145480” 是不合法的(秒数不合法),将被解释为 “0000-00-00 00:00:00”。

YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 格式的数字。如果该数字对日期时间类型是合法的就可以解释为日期时间类型。例如:“20140618145410” 和 “140618145410” 将被解释为 “2014-06-18 14:54:10” 。数值的长度应为6、8、12、14。如果数值长度是 8 或 14 位长,则假定为 YYYYMMDD 或 YYYYMMDDHHMMSS 格式。如果数值为 6 或 12 位长,则假定为 YYMMDD 或 YYMMDDHHMMSS 格式。

    参考技术A

    create table dat_admin_user
    (
    user_id char(36) not null,
    user_name varchar(20) not null,
    pwd varchar(20) not null,
    create_time datetime not null,//创建日期类型
    status char(1) not null,
    primary key (user_id)
    )
    ENGINE = InnoDB;

    mysql(5.5)所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。

    拓展资料:

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

    由于其社区版的性能卓越,搭配 php 和 Apache 可组成良好的开发环境。

    Mysql-百度百科

    参考技术B

    1 mysql的日期时间类型:

    date, time, datetime, timestamp;

    2 示例:

    drop table t;

    create table test.t (

    a date, 

    b time , 

    c datetime DEFAULT '2012-01-01', 

    d timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

    3 说明:

    只有timestamp类型能设置DEFAULT CURRENT_TIMESTAMP,且有这个选项的timestamp列只能一个;

    ON UPDATE CURRENT_TIMESTAMP 意义为,更新该行时,如不显式指明该列的值则自动取当时时间作为该列的值;

    拓展资料:

    实例

    drop database if exists school; //如果存在SCHOOL则删除

    create database school; //建立库SCHOOL

    use school; //打开库SCHOOL

    create table teacher //建立表TEACHER

    (

    id int(3) auto_increment not null primary key,

    name char(10) not null,

    address varchar(50) default ‘深圳',

    year date

    ); //建表结束

    //以下为插入字段

    insert into teacher values('','glchengang',’XX公司‘,'1976-10-10');

    insert into teacher values('','jack',’XX公司‘,'1975-12-23');

    注:在建表中:

    1.将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key。

    2.将NAME设为长度为10的字符字段。

    3.将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。

    4.将YEAR设为日期字段。

    如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:

    mysql -uroot -p密码 < c:\\school.sql

    如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

    mySQL 百度百科

    参考技术C 1 mysql的日期时间类型:
    date, time, datetime, timestamp;

    2 示例:
    drop table t;
    create table test.t (
    a date,
    b time ,
    c datetime DEFAULT '2012-01-01',
    d timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)
    ;

    3 说明:
    只有timestamp类型能设置DEFAULT CURRENT_TIMESTAMP,且有这个选项的timestamp列只能一个;
    ON UPDATE CURRENT_TIMESTAMP 意义为,更新该行时,如不显式指明该列的值则自动取当时时间作为该列的值;本回答被提问者和网友采纳
    参考技术D `daytime` date

    以上是关于MySql建表时日期类型的出理的主要内容,如果未能解决你的问题,请参考以下文章

    sql server中创建表时各个数据类型时啥意思??

    【MySQL】建表(一):数据类型

    跟王老师学MySQL:MySQL数据类型常见问题及解答

    跟王老师学MySQL:MySQL数据类型常见问题及解答

    powerDesigner建表时选择不同数据库类型

    mysql建表时怎样设置datetime类型的字段默认值为不自动更新的系统当前时间