mysql时间类型(datetime timestamp date time)

文章介绍了MySQL中的四种时间类型:datetime、date、timestamp和time,以及它们之间的区别,如datetime与timestamp的精度和时区关联性。通过示例展示了如何在查询中使用这些类型。
摘要由CSDN通过智能技术生成

一、mysql四种时间类型

首先创建一个表用于测试,举例:

create table table_name
(
    id         int auto_increment
        primary key,
    dateTime1 	datetime  null,
    date1 		date      null,
    timeStamp1 	timestamp null,
    time1 		time      null
);
insert into table_name(dataTime1, timeStamp1, date1, time1)values ('2021-12-27 17:21:31', null, null, null);

insert into table_name(dataTime1, timeStamp1, date1, time1)values (null, '2021-12-27 17:21:31', null, null);

insert into table_name(dataTime1, timeStamp1, date1, time1)values (null, null, '2021-12-27', null);

insert into table_name(dataTime1, timeStamp1, date1, time1)values (null, null, null, '17:21:31');

说明:创建了一个table_name的表,和时间类型有关的四个参数,紧接着往表里插入四条数据。不难发现其实每种类型数据库都允许null值出现

1. datetime

select * from table_name where dataTime1 > '2021-12-26 17:21:31';select * from table_name where dataTime1 > timestamp('2021-12-26 17:21:30');

查询结果都是:
请添加图片描述

2. date

select * from table_name where date1 > date ('2021-12-26 17:21:30');select * from table_name where date1 > '2021-12-26 17:21:30';select * from table_name where date1 > '2021-12-26';

查询结果都是:
请添加图片描述

3. timestamp

select * from table_name where timeStamp1 > timestamp ('2021-12-26 17:21:30');select * from table_name where timeStamp1 > '2021-12-26 17:21:30';

查询结果都是:
请添加图片描述

4. time

select * from table_name where time1 > time('2021-12-26 17:21:30');select * from table_name where time1 > '17:21:30';

查询结果都是:
请添加图片描述

二、datetime和timestamp区别

  • datetime、timestamp精确度都是秒,
  • datetime与时区无关,存储的范围广(1001-9999),
  • timestamp与时区有关,存储的范围小(1970-2038)。
    举例:查询表中所有内容
select * from table_name;

结果(当前时区为东八区)请添加图片描述
修改mysql时区后再次查询

set time_zone ='+0:00';			//修改时区

请添加图片描述
总结:可以发现时区变化之后,timestamp的值会相应的自动发生变化!

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,时间类型有四种,分别是DATETIMEDATETIMETIMESTAMP,这些类型在Java中的转换方式如下: 1. DATETIME类型 在Java中,可以使用java.time.LocalDateTime类来表示DATETIME类型。在通过JDBC从MySQL中读取DATETIME类型的值时,可以使用ResultSet类的getTimestamp方法获取java.sql.Timestamp类型的值,然后再将其转换为java.time.LocalDateTime类型: ```java ResultSet rs = stmt.executeQuery("SELECT datetime_column FROM table"); while (rs.next()) { Timestamp timestamp = rs.getTimestamp("datetime_column"); LocalDateTime datetime = timestamp.toLocalDateTime(); // ... } ``` 在将java.time.LocalDateTime类型的值写入到MySQLDATETIME类型的字段时,可以使用PreparedStatement类的setTimestamp方法: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (datetime_column) VALUES (?)"); LocalDateTime datetime = LocalDateTime.now(); Timestamp timestamp = Timestamp.valueOf(datetime); pstmt.setTimestamp(1, timestamp); pstmt.executeUpdate(); ``` 2. DATE类型 在Java中,可以使用java.time.LocalDate类来表示DATE类型。在通过JDBC从MySQL中读取DATE类型的值时,可以使用ResultSet类的getDate方法获取java.sql.Date类型的值,然后再将其转换为java.time.LocalDate类型: ```java ResultSet rs = stmt.executeQuery("SELECT date_column FROM table"); while (rs.next()) { Date date = rs.getDate("date_column"); LocalDate localDate = date.toLocalDate(); // ... } ``` 在将java.time.LocalDate类型的值写入到MySQLDATE类型的字段时,可以使用PreparedStatement类的setDate方法: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (date_column) VALUES (?)"); LocalDate localDate = LocalDate.now(); Date date = Date.valueOf(localDate); pstmt.setDate(1, date); pstmt.executeUpdate(); ``` 3. TIME类型 在Java中,可以使用java.time.LocalTime类来表示TIME类型。在通过JDBC从MySQL中读取TIME类型的值时,可以使用ResultSet类的getTime方法获取java.sql.Time类型的值,然后再将其转换为java.time.LocalTime类型: ```java ResultSet rs = stmt.executeQuery("SELECT time_column FROM table"); while (rs.next()) { Time time = rs.getTime("time_column"); LocalTime localTime = time.toLocalTime(); // ... } ``` 在将java.time.LocalTime类型的值写入到MySQLTIME类型的字段时,可以使用PreparedStatement类的setTime方法: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (time_column) VALUES (?)"); LocalTime localTime = LocalTime.now(); Time time = Time.valueOf(localTime); pstmt.setTime(1, time); pstmt.executeUpdate(); ``` 4. TIMESTAMP类型 在Java中,可以使用java.time.LocalDateTime类来表示TIMESTAMP类型。在通过JDBC从MySQL中读取TIMESTAMP类型的值时,可以使用ResultSet类的getTimestamp方法获取java.sql.Timestamp类型的值,然后再将其转换为java.time.LocalDateTime类型: ```java ResultSet rs = stmt.executeQuery("SELECT timestamp_column FROM table"); while (rs.next()) { Timestamp timestamp = rs.getTimestamp("timestamp_column"); LocalDateTime datetime = timestamp.toLocalDateTime(); // ... } ``` 在将java.time.LocalDateTime类型的值写入到MySQLTIMESTAMP类型的字段时,可以使用PreparedStatement类的setTimestamp方法: ```java PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (timestamp_column) VALUES (?)"); LocalDateTime datetime = LocalDateTime.now(); Timestamp timestamp = Timestamp.valueOf(datetime); pstmt.setTimestamp(1, timestamp); pstmt.executeUpdate(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值