MYSQL datetime 类型 长度填多少啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL datetime 类型 长度填多少啊相关的知识,希望对你有一定的参考价值。

?、[Err] 1067 - Invalid default value for 提示这样的错误!!!!! 1到20都提示这样的错误!!!!!!!!!!!!!!!!!!!!!!!!
想建一个能保存时间的表 2009-10-21 15:23:47

mysql,datetime类型长度填8位。。

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

日期型(DATETIME)数据是表示日期数据,用字母D表示。日期的默认格式是{mm/dd/yyyy},其中mm表示月分,dd表示日期,yyyy表示年度,固定长度为8位。日期范围为介于 100 到 9999 年的日期或时间数值。

扩展资料:

与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。

Linux作为操作系统,Apache 或nginx作为 Web 服务器,MySQL 作为数据库,php/Perl/Python作为服务器端脚本解释器。

由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。

参考技术A

MYSQL,datetime类型长度填8位。。

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

日期型(DATETIME)数据是表示日期数据,用字母D表示。日期的默认格式是{mm/dd/yyyy},其中mm表示月分,dd表示日期,yyyy表示年度,固定长度为8位。日期范围为介于 100 到 9999 年的日期或时间数值。

扩展资料

MYSQL其他数据类型:

1、BINARY:每个字符占一个字节,任何类型的数据都可存储在这种类型的字段中。不需数据转换。

2、BIT:1 个字节0 和 1 ,以及只包含这两个数值之一的字段。

3、TINYINT:1个字节,介于0到255之间的整型数。

4、MONEY:8个字节,介于–922,337,203,685,477.5808到922,337,203,685,477.5807之间的符号整数。

参考技术B

MYSQL,datetime类型长度填8位。

日期型(DATETIME)数据是表示日期数据,用字母D表示。日期的默认格式是{mm/dd/yyyy},其中mm表示月分,dd表示日期,yyyy表示年度,固定长度为8位。日期范围为介于 100 到 9999 年的日期或时间数值。

扩展资料:

MYSQL其他数据类型:

1、BINARY:每个字符占一个字节,任何类型的数据都可存储在这种类型的字段中。不需数据转换。数据输入二进制字段的方式决定了它的输出方式。

2、BIT:1 个字节0 和 1 ,以及只包含这两个数值之一的字段。

3、TINYINT:1个字节,介于0到255之间的整型数。

4、MONEY:8个字节,介于–922,337,203,685,477.5808到922,337,203,685,477.5807之间的符号整数。

5、UNIQUEIDENTIFIER:128个位,用于远程过程调用的唯一识别数字。

6、REAL:4个字节单精度浮点数,负数范围是从–3.402823E38到–1.401298E-45,正数从1.401298E-45到3.402823E38,和0。

7、SMALLINT:2个字节,介于–32,768到32,767的短整型数。

8、INTEGER:4个字节,介于–2,147,483,648到2,147,483,647的长整型数。

9、DECIMAL:17个字节,容纳从1028-1到-1028-1的值的精确的数字数据类型。你可以定义精度(1-28)和符号(0-定义精度)。缺省精度和符号分别是18和0。

10、TEXT每一字符两字节,从零到最大2.14千兆字节。

11、IMAGE视实际需要而定,从零到最大2.14千兆字节。用于OLE对象。

12、CHARACTER每一字符两字节,长度从0到255个字符。

参考技术C mysqldatetime不用填长度吧 选datetime类型就够了本回答被提问者采纳 参考技术D 在navicat里面datetime的长度好像指的是秒后面的小数点位数,可以设置为0-6位

MySql 时间类型 & JDBC时间类型

MySql时间类型:DATETIME & TIMESTAMP

  • 长度

    • DATETIME类型包含DATE和TIME,范围1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。DATETIME还能包含毫秒,例如2018-03-11 14::13:22.999
    • TIMESTAMP也能存储日期和时间,但是范围只有1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC
  • 时区

    • DATETIME存储的时间不包含时区

    • TIMESTAMP存储的UTC时间

      例如:

      1. create table

        CREATE TABLE timestamp_n_datetime (
        id INT AUTO_INCREMENT PRIMARY KEY,
        ts TIMESTAMP,
        dt DATETIME
        );
      2. insert now(当前时区为+08)

        insert into timestamp_n_datetime(ts,dt) values (now(), now());
      3. select

        MariaDB [test]> select * from timestamp_n_datetime;
        +----+---------------------+---------------------+
        | id | ts                  | dt                  |
        +----+---------------------+---------------------+
        |  1 | 2018-03-11 14:35:01 | 2018-03-11 14:35:01 |
        +----+---------------------+---------------------+
        1 row in set (0.00 sec)
      4. 修改时区

        MariaDB [test]> set time_zone = ‘+00:00‘;
        Query OK, 0 rows affected (0.02 sec)
      5. 再次查询

        MariaDB [test]> select * from timestamp_n_datetime
        -> ;
        +----+---------------------+---------------------+
        | id | ts                  | dt                  |
        +----+---------------------+---------------------+
        |  1 | 2018-03-11 06:35:01 | 2018-03-11 14:35:01 |
        +----+---------------------+---------------------+
        1 row in set (0.00 sec)

        TIMESTAMP存储的时间调整到了新时区,而DATETIME存储的时间不变。刚接触java的时候写代码的就出现过时区问题,mybatis mysql,表字段类型为DATETIME,java类型为java.util.Date。通过查看java connector源码com.mysql.cj.mysqla.MysqlaSession.java的configureTimezone方法,

        this.getServerVariable("system_time_zone")

        调试这里发现从系统里面读出来的时区设置是CST。于是去查找数据库服务器的原因

        MariaDB [(none)]> show variables like ‘%time_zone%‘;
        +------------------+--------+
        | Variable_name    | Value  |
        +------------------+--------+
        | system_time_zone | CST    |
        | time_zone        | SYSTEM |
        +------------------+--------+
        2 rows in set (0.01 sec)

        解决方法:

        • 修改配置文件 /etc/my.cnf.d/server.cnf (centos 7),需要重启mysql

          # this is only for the mysqld standalone daemon
          [mysqld]
          default-time-zone=‘+08:00‘ # 将这行加到mysqld节点下
        • 修改数据库服务变量(未验证,如果不方便修改配置文件或重启数据库。重启数据库之后失效??)

          set time_zone=‘+08:00‘;
          set global time_zone=‘+08:00‘;
          flush privileges;

        如果是直接使用jdbc而不是mybatis,则通过

        java.util.Date now = new java.util.Date();
        java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(now.getTime());
        PreparedStatement.setTimestamp(1, sqlTimestamp, Calendar.getInstance(Locale.CHINA)); 

        即指定第三个参数。如果没有指定第三个参数,则又使用了CST时间(setTimestamp源码中)

JDBC表示时间的类型

这一节的资料有点老(https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/guide/jdbc/getstart/mapping.doc.html)

这三种类型都继承自java.util.Date,因为java.util.Date没法匹配三种JDBC时间类型。

  • DATE表示只包含了年月日的时间类型 java.sql.Date for SQL DATE(这里的SQL说的是SQL-92标准)。 父类的hour, minute, second, millisecond字段被设置为0。

  • TIME表示只包含了时分秒的时间类型 java.sql.Time for SQL TIME information. 父类的year, month, day字段被设置为1970, 1月, 1号. 这个时间是java里面的“零纪元”

  • TIMESTAMP包含了DATE+TIME再加上一个纳秒(nanosecond)字段 java.sql.Timestamp for SQL TIMESTAMP information. 这个类型为java.util.Date扩展了额外的nanosecond字段。

其他命令

get current time_zone
SELECT @@global.time_zone, @@session.time_zone;
如果查询结果是SYSTEM,表示mysql服务器使用了系统时区 date -R命令能查看系统时区。

以上是关于MYSQL datetime 类型 长度填多少啊的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql数据库里面数据类型number的问题

MYSQL各字段的长度是多少

mysql varchar 最大可以设置多少

Mysql存储日期类型用inttimestamp还是datetime?

MySql 时间类型 & JDBC时间类型

MySQL数据库中 int 长度最大是多少?