博客
关于我
11.2.7 日期和时间类型之间的转换
阅读量:357 次
发布时间:2019-03-05

本文共 1821 字,大约阅读时间需要 6 分钟。

官方文档地址:


在某种程度上,您可以将一个值从一个时态类型转换为另一个时态类型。然而,可能会有一些价值的改变或信息的丢失。在所有情况下,时间类型之间的转换都取决于结果类型的有效值范围。例如,尽管可以使用相同的格式集指定 DATE、DATETIME 和TIMESTAMP 值,但这些类型的值范围并不都相同。TIMESTAMP 值不能早于1970UTC或晚于'2038-01-19 03:14:07' UTC。这意味着,像'1968-01-01'这样的日期作为 DATE 或 DATETIME 值是有效的,但作为 TIMESTAMP 值是无效的,它将被转换为0

DATE 值的转换:

  • 转换为 DATETIME 或 TIMESTAMP 值会增加'00:00:00'的时间部分,因为 DATE 值不包含时间信息。
  • 转换为 TIME 值是没有用的;因为结果是'00:00:00'

DATETIME 和 TIMESTAMP 值的转换:

  • 转换为 DATE 值,会先将小数秒进行舍入操作,然后将时间部分舍入。例如,'1999-12-31 23:59:59.499'变成'1999-12-31',而'1999-12-31 23:59:59.500'变成了'2000-01-01'
  • 转换为 TIME 值会丢弃日期部分,因为 TIME 类型不包含日期信息。

为了将 TIME 值转换为其他时间类型,CURRENT_DATE()的值用于日期部分。TIME 会被解释为经过的时间(不是一天中的时间)并添加到日期中。这意味着,如果时间值不在'00:00:00''23:59:59'的范围内,结果的日期部分与当前日期不同。

假设当前日期是'2012-01-01'。TIME 值是'12:00:00''24:00:00',和'-12:00:00',当转换为 DATETIME 或 TIMESTAMP 值时,结果分别是'2012-01-01 12:00:00''2012-01-02 00:00:00''2011-12-31 12:00:00'

TIME 到 DATE 的转换类似,但会丢弃时间部分,结果分别是:'2012-01-01''2012-01-02''2011-12-31'

显式转换可用于覆盖隐式转换。例如,在比较 DATE 和 DATETIME 值时,通过添加'00:00:00'的时间部分将 DATE 值强制转换为 DATETIME 类型。要通过忽略 DATETIME 值的时间部分来执行比较,请按以下方式使用CAST()函数:

date_col = CAST(datetime_col AS DATE)

将 TIME 和 DATETIME 值转换为数字形式(例如,通过添加+0)取决于该值是否包含小数秒部分。TIME(N)DATETIME(N),当N0时(或N省略)转换为整数,当N大于0时转换为含有N位小数的数字:

mysql> SELECT CURTIME(), CURTIME()+0, CURTIME(3)+0;+-----------+-------------+--------------+| CURTIME() | CURTIME()+0 | CURTIME(3)+0 |+-----------+-------------+--------------+| 09:28:00  |       92800 |    92800.887 |+-----------+-------------+--------------+mysql> SELECT NOW(), NOW()+0, NOW(3)+0;+---------------------+----------------+--------------------+| NOW()               | NOW()+0        | NOW(3)+0           |+---------------------+----------------+--------------------+| 2012-08-15 09:28:00 | 20120815092800 | 20120815092800.889 |+---------------------+----------------+--------------------+

转载地址:http://ghcg.baihongyu.com/

你可能感兴趣的文章
OpenAI Gym简介及初级实例
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
vue源码分析(MVVM篇)
查看>>
设计模式之组合模式
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
leetcode 14 最长公共前缀
查看>>
做做Java
查看>>
C++并发与多线程(一)
查看>>
java一些基本程序
查看>>
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>
A Guide to Node.js Logging
查看>>