在某种程度上,您可以将值从一种时态类型转换为另一种。然而,信息的价值可能会有所改变或丢失。在所有情况下,时态类型之间的转换都取决于结果类型的有效值范围。例如,尽管日期
,DATETIME
,时间戳
所有的值都可以使用相同的格式集指定,类型并不都具有相同的值范围。时间戳
取值不能早于1970
UTC或晚于“2038-01-19 03:14:07”
UTC。这意味着一个日期,如“1968-01-01”
,而有效作为日期
或DATETIME
值,是无效的时间戳
值,并转换为0
.
转换日期
价值观:
用于转换时间
值转换为其他时态类型时,的值当前日期()
用于日期部分。的时间
解释为经过的时间(而不是一天中的时间)并添加到日期中。这意味着如果时间值超出的范围,则结果的日期部分与当前日期不同“就是”
来的23:59:59
.
假设当前日期为“2012-01-01”
.时间
的值“12:00:00”
,“24:00:00”
,“12:00:00”
,当转换为DATETIME
或时间戳
值,结果为“2012-01-01 12:00:00”
,“2012-01-02”就是
,“2011-12-31 12:00:00”
,分别。
转换时间
来日期
类似,但从结果中丢弃时间部分:“2012-01-01”
,“2012-01-02”
,“2011-12-31”
,分别。
显式转换可用于覆盖隐式转换。例如,在比较中日期
而且DATETIME
值,日期
价值是被强制的DATETIME
的时间部分来键入“就是”
.的时间部分来执行比较DATETIME
值代替把()
功能如下:
date_col=投(datetime_col日期)
转换时间
而且DATETIME
值转换为数值形式(例如,通过添加+ 0
)取决于该值是否包含小数秒部分。时间(
或N
)DATETIME (
转换为整数时N
)N
0(或省略)和a小数
价值与N
十进制数字时N
大于0:
mysql> SELECT CURTIME(), CURTIME()+0, CURTIME(3)+0;+-----------+-------------+--------------+ | CURTIME () | CURTIME () + 0 | CURTIME (3) + 0 | +-----------+-------------+--------------+ | 09:28:00 | 92800 | 92800.887 | +-----------+-------------+--------------+ 现在mysql > SELECT(),() + 0,现在(3)+ 0;+---------------------+----------------+--------------------+ | 现在()|()现在(3)+ 0 + 0 | | +---------------------+----------------+--------------------+ | 2012-08-15 09:28:00 | 20120815092800 | 20120815092800.889 | +---------------------+----------------+--------------------+