mysql服务器在另一个时区,需要正确的时间

标签 mysql

我在佛罗里达州的一个客户有一个网站托管在德克萨斯州休斯顿的服务器上。他对数据库中的所有报告晚了一个小时才出来感到不安。要将记录插入数据库,请使用 MySQL 函数 time(),然后使用标准 SELECT 语句从数据库中取出记录。有没有一些简单的方法可以修改 INSERT 语句或 SELECT 语句以使用正确的时区。

这里是创建 INSERT 语句的位置:

  $query_rsCWAddOrder = sprintf("INSERT INTO tbl_orders 
  (order_ID, order_CustomerID, 
  order_Tax, order_Shipping, order_ShippingTax,
  order_Total, order_Status,
  order_ShipMeth_ID, order_Address1, 
  order_Address2, order_City,
  order_Zip, order_Country, 
  order_State, order_TransactionID, 
  order_Date, order_ShipName, order_DiscountID, 
  order_DiscountAmount, order_Comments) 
  VALUES ('%s','%s',%s,%s,%s,%s,'%s',%s,'%s','%s','%s','%s','%s','%s','%s',now(),'%s',%d, %s, '%s')",
  $thisOrderID
  , $_SESSION["customerID"]
  , mySQLFloat($cart["CartTotals"]["Tax"] )
  , str_replace('$', '', $_SESSION['SHIPPING_TOTAL']) 
  , mySQLFloat($cart["CartTotals"]["ShippingTax"] )
  , str_replace('$', '', $_SESSION['ORDER_TOTAL']) 
  , 2
  , $_SESSION["shipPref"] != 0 ? $_SESSION["shipPref"] : "NULL"
  , addslashes($shipToStreet)
  , addslashes($shipToStreet2)
  , addslashes($shipToCity)
  , addslashes($shipToZip)
  , addslashes($row_rsCWGetCustShipping["country_Code"])
  ,addslashes($row_rsCWGetCustShipping["stprv_Code"])
  , $transactionID 
  , addslashes($shipToName)
  , intval($_REQUEST["shippingDiscount"])
  , mySQLFloat($cart["CartTotals"]["ShippingDiscounts"])
  , addslashes($_SESSION["order_Comments"]));

这是 select 语句(但还有更多具有不同 select 语句的报告):

$query_rsCWGetStatus = sprintf("SELECT o.order_Status, o.order_Date, c.cst_Email 
 FROM tbl_orders o
 INNER JOIN tbl_customers c 
 ON c.cst_ID = o.order_CustomerID
 WHERE order_ID = '%s'",$_POST["orderID"]);

最佳答案

来自 MySQL 引用:

CONVERT_TZ(dt,from_tz,to_tz) converts a datetime value dt from the time zone given by from_tz to the time zone given by to_tz and returns the resulting value

就您的情况而言,您需要决定是否要在插入时或查询时进行转换。由于您已经有了数据,您应该更改您的选择:

SELECT o.order_Status, CONVERT_TZ(o.order_Date,'CST','EST'), ...

SELECT o.order_Status, CONVERT_TZ(o.order_Date,'-06:00','-05:00'), ...

关于mysql服务器在另一个时区,需要正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2275961/

相关文章:

mysql - 如何避免使用子查询在 MySQL 中多次运行一个大表?

mysql - 我应该规范化这个(用户)表吗?

MySQL:如果表 1 中存在行,则在表 2 上插入行

php - 这个系统有什么更好的 solr 查询?

php - MySQL 仅返回其他表中不存在的列的行

MySQL选择,显示一行,列上有多个值

php - 搜索整个表? PHP MySQL

mysql - 如何以 csv 格式输出 MySQL 查询结果(到屏幕,而不是文件)?

PHP 表单数据到 MYSQL 数据库 NOT NULL 规则

mysql - 如何使用 Spring 和 MySQL 配置 Wildfly 以支持 unicode 表情符号?