date、time、datetime、timestamp区别

本文详细讲解了日期格式'YYYY-MM-DD', 'HH:MM:SS', 'YYYY-MM-DDHH:MM:SS'及其子类型timestamp与datetime的区别,涉及范围、优势与劣势,并探讨了timestamp在实际应用中的便捷性和时效性。
摘要由CSDN通过智能技术生成

一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction]

  • YYYY-MM-DD 为日期
  • HH:MM:SS 为时间
  • fraction 为毫秒

比如:’1970-01-01 00:00:01.000000’ ~ ‘2038-01-19 03:14:07.999999’。

类型格式范围
date“YYYY-MM-DD”‘1000-01-01’ ~ ‘9999-12-31’
time“HH:MM:SS”‘-838:59:59’ ~ ’838:59:59’
datetime“YYYY-MM-DD HH:MM:SS”‘1000-01-01 00:00:00’ ~ ’9999-12-31 23:59:59’
timestamp“YYYY-MM-DD”’1970-01-01 00:00:01’ ~ ‘2038-01-19 03:14:07’
timestamp相比于datetime的区别:

timestamp
一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
使用数字签名技术产生的数据, 签名的对象包括了原始文件信息、 签名参数、 签名时间等信息。广泛的运用在知识产权保护、 合同签字、 金融帐务、 电子报价投标、 股票交易等方面。

timestamp占4字节,datetime占8字节;
包含时区信息,如果日后修改了时区的话,timestamp所表示的时间会随时区而变化,而datetime不会。

timestamp 更适合来记录时间,比如我在东八区时间现在是 2016-08-02 10:35:52, 你在日本(东九区此时时间为 2016-08-02 11:35:52),我和你在聊天,数据库记录了时间,取出来之后,对于我来说时间是 2016-08-02 10:35:52,对于日本的你来说就是 2016-08-02 11:35:52。所以就不用考虑时区的计算了。

timestamp的劣势:只能表示从1970年到2038年的时间,而datetime (1000-9999)。

性能方面比较,timestamp是纯数字,计算要快一些,但人类不可读,还必须要经过函数转化,datetime是字符串类型,人类肉眼直接可读,虽然计算加减乘除时要经过一道转化。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java提供了几种处理日期和时间的类:`Date`、`LocalDate`、`LocalTime`、`LocalDateTime`、`ZonedDateTime`等等。其中,`Date`类是旧版本的日期时间类,而其他类是Java 8引入的新日期时间API。 `Date`类表示特定的日期和时间,但它在处理日期和时间时存在一些问题,因此在新的Java日期时间API中被废弃。推荐使用`LocalDate`、`LocalTime`和`LocalDateTime`类来处理日期和时间。 `LocalDate`类表示一个没有时区信息的日期,包含年、月、日信息。 `LocalTime`类表示一个没有日期信息的时间,包含时、分、秒和毫秒信息。 `LocalDateTime`类表示一个包含日期和时间的对象。 另外,如果你需要处理带有时区的日期和时间,可以使用`ZonedDateTime`类。 关于时间戳(timestamp),在Java中可以使用`Instant`类来表示。`Instant`类代表从1970年1月1日开始计数的秒数或纳秒数。你可以使用该类来表示一个特定的时间点。 以下是一个示例代码,演示了如何在Java中处理日期和时间: ```java import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.ZonedDateTime; import java.time.Instant; public class DateTimeExample { public static void main(String[] args) { // 获取当前日期 LocalDate currentDate = LocalDate.now(); System.out.println("Current Date: " + currentDate); // 获取当前时间 LocalTime currentTime = LocalTime.now(); System.out.println("Current Time: " + currentTime); // 获取当前日期和时间 LocalDateTime currentDateTime = LocalDateTime.now(); System.out.println("Current Date and Time: " + currentDateTime); // 获取带时区的日期和时间 ZonedDateTime zonedDateTime = ZonedDateTime.now(); System.out.println("Zoned Date and Time: " + zonedDateTime); // 获取当前时间戳 Instant timestamp = Instant.now(); System.out.println("Timestamp: " + timestamp);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitemeen太白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值