在MySQL PHP中使用设置时区有什么缺点吗
我在数据库中使用时间戳字段,我的PHP软件有自己的基于用户时区的时间管理系统。我想对某些类型的数据(创建或修改时)使用时间戳字段,并且能够对列使用te在MySQL PHP中使用设置时区有什么缺点吗,php,mysql,datetime,timezone,Php,Mysql,Datetime,Timezone,我在数据库中使用时间戳字段,我的PHP软件有自己的基于用户时区的时间管理系统。我想对某些类型的数据(创建或修改时)使用时间戳字段,并且能够对列使用teDEFAULT CURRENT\u timestamp 每次创建会话时,使用,SET time_zone='+00:00'将时区设置为UTC是否有任何缺点。我有四个独立的数据库供软件使用,目前,我正在将当前时区设置为UTC 我不想使用DATETIME,因为它们的大小更大,而且我也不能使用默认的当前时间戳,因为服务器的时区可能有偏移量 如果后端已使用
DEFAULT CURRENT\u timestamp
每次创建会话时,使用,SET time_zone='+00:00'
将时区设置为UTC是否有任何缺点。我有四个独立的数据库供软件使用,目前,我正在将当前时区设置为UTC
我不想使用DATETIME,因为它们的大小更大,而且我也不能使用默认的当前时间戳,因为服务器的时区可能有偏移量 如果后端已使用所有逻辑正确转换用户时区,则不应使用设置时区,因为这样会不必要地浪费资源。UTC时区应包含在DB的元数据中,DB事务将始终与之一起工作 顺便说一下,您不需要设置它,除非您的列是(我认为不是这样) 当您插入时间戳值时,MySQL会将其从 连接到UTC进行存储的时区。当您查询时间戳时 值,MySQL将UTC值转换回连接的时间 区请注意,此转换不会对其他时态进行 数据类型,如DATETIME 所以你有两个选择:
- 在事务中设置时区,在sql中使用时间李>
- 在后端使用unix时区,只在前端向用户显示正确的转换时间
我更喜欢第二个。在处理输入日期和/或修改日期的日期/时间时,最好使用长度约为200(或适合完整日期的任何其他值)的普通
VARCHAR
,以便存储完整日期并在PHP脚本中处理日期/时间。这使您能够根据PHP代码中定义的时区灵活地查看时间。查看PHP中可用的时区
您还可以使用PHP的date\u格式
以任何可能的格式格式化日期/时间
我在下面给出了一个参考代码
//This is the way you define your timezone in PHP code
date_default_timezone_set('Asia/Beirut');
//You can capture the date/time by using the below code. This will store "2017-05-28 23:55:34"
$date_time_registered = date('Y-m-d H:i:s');
//Retrieve the date/time and re-format it as you require. Below code will output "May", full month.
$retrieve_month_only = date_create($row['your_store_date_time']);
$retrieve_month_formatted = date_format($retrieve_month_only, 'F');
echo $retrieve_month_formatted;
您可以参考以了解PHP日期/时间格式。是的,我读过mysql在默认情况下设置utc时区作为时间戳,但在检索时总是转换它。我的php时区设置为UTC,mysql设置为我的系统时区。我不想将UTC设置为mysql的全局时区,因为它也会影响系统中的其他db。