开发者

mysql server in another timezone, needs correct time

开发者 https://www.devze.com 2022-12-20 14:15 出处:网络
A client of mine in Florida has a site hosted on a server in Houston, TX. He is upset that all of his reports are coming out from the database a hour off.to insert records into the database, the MySQL

A client of mine in Florida has a site hosted on a server in Houston, TX. He is upset that all of his reports are coming out from the database a hour off. to insert records into the database, the MySQL Function time() is used, then a standard SELECT statements get the records out of the database. Is there some easy way I can modify the INSERT statement, or the SELECT statement to use the correct time zone.

Here is where the INSERT statement is being created:

  $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开发者_如何学JAVA_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"]));

and here is the select statement (but there are more reports with different select statements):

$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"]);


From MySQL Reference:

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

In your case, you need to decide if you want to do the conversion when inserting or when querying. Since you already have data, you should change your selects:

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

or

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

精彩评论

暂无评论...
验证码 换一张
取 消