我对MySQL数据库中日期和时间的选择感到困惑。是否有一个备忘单给我的基本知识和总结的选择?
我欢迎技术上的修正,但请记住,这并不意味着要作参考。这是一份总结备忘单。
发布于 2013-01-18 02:20:47
MYSQL日期、日期和时间戳备忘单
DATE
支持范围从“1000-01-01”到“9999-12-31”。
以YYY DD格式存储为字符串。
DATETIME
支持范围从“1000-01-01 00:00:00:00”到“9999-12-31 23:59:59”。
以YYYY DD:MM:SS格式存储为字符串.
表示日历上的日期和挂钟上的时间。在创建或更新记录时,它永远不会更改。它不会根据服务器的时区而改变。可以完成从1000年到9999年的日期。
时间戳
支持范围从‘1970-01: 00:00:01’世界协调时到'2038-01-19 03:14:07‘世界协调时
不能早于1970年的日期,所以不能用于生日。
以YYYY DD:MM:SS格式存储为字符串.
时间戳是一个独特的时间点。在MySQL中,它通常用于跟踪对记录的更改,并且可以设置为在创建和/或更新记录时自动更新。
MySQL基于服务器的时区转换时间戳值。它被转换为UTC (协调统一时间)存储,并再次返回到服务器的时区进行检索。
UNIX时间戳
UTC调整了自1970年1/1/1970以来的秒数,存储为带符号的32位整数.
当发生闰秒时,使UTC日的长度不完全为86400秒时,Unix时间数就会出现不连续性。
它们存储在MySQL中的“整型”列中,这些列在内部存储为32位。
MySQL日期函数
MySQL日期和时间格式是字符串,而不是整数。
FROM_UNIXTIME(时间戳)将unix时间戳格式化为字符串
UNIX_TIMESTAMP(mysqldate)将MySQL字符串转换为unix时间戳。
PHP函数
Php日期函数与unix时间戳(即整数)一起工作。
字符串日期( string $format,int $timestamp)从unix时间戳返回MySQL字符串。
int strtotime(字符串$mysqldate)从MySQL字符串返回unix时间戳。
处理不兼容日期时间格式的方法:
PHP将unix时间戳转换为MySQL字符串:
$mysqldate = date( 'Y-m-d H:i:s', $timestamp );PHP将MySQL字符串转换为unix时间戳:
$timestamp = strtotime( $mysqldate );MySQL将unix时间戳转换为MySQL字符串:
$query = "UPDATE table SET mysqldatetimefield = FROM_UNIXTIME($timestamp);MySQL将MySQL字符串转换为unix时间戳:
$query = "SELECT UNIX_TIMESTAMP(mysqldate) FROM table;将unix时间戳存储在MySQL整数列中:
mysql> CREATE TABLE table ( timestamp INTEGER, PRIMARY KEY (timestamp) );
mysql> INSERT INTO table(timestamp) VALUES (1358402400)https://stackoverflow.com/questions/14391478
复制相似问题