2017-03-17 21 views
0

に日付を変換し続ける:Pythonスクリプトは、私は以下の持っているUTC

import psycopg2 
from openpyxl import Workbook 
wb = Workbook() 
wb.active =0 
ws = wb.active 
ws.title = "Repair" 
ws.sheet_properties.tabColor = "CCFFCC" 

print(wb.sheetnames) 

import datetime 
import smtplib 
import mimetypes 

import logging 
LOG_FILENAME = 'log-production.out' 
logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG) 

logging.debug('This message should go to the log file') 

from datetime import date, timedelta 
import os, sys 
try: 
    conn = psycopg2.connect("connection string") 
except: 
    print "I am unable to connect to the database" 

cur = conn.cursor() 
cur.execute("""SELECT ams.unit.line,ams.unit.work_order,ams.unit.model_num, ams.unit.revision ,ams.unit.serial_num,ams.unit.lpn, ams.unit_repair_detail.level_1_name as level_1, 
      ams.unit_repair_detail.level_2_name as level_2, ams.unit_repair_detail.level_3_name as level_3,ams.unit_repair_detail.level_4_name as level_4,ams.unit_repair.date_started AT TIME ZONE 'UTC' as date_started,ams.unit_repair.date_completed AT TIME ZONE 'UTC' as date_completed 
        FROM ams.unit_repair 
         left join 
          ams.unit 
            on ams.unit_repair.unit_id=ams.unit.id and 
            LOWER(ams.unit_repair.line) = LOWER(ams.unit.line) 
         right join 
          ams.unit_repair_detail 
            on ams.unit_repair.sid = ams.unit_repair_detail.unit_repair_sid 
            WHERE 
            LOWER(ams.unit.line) like ('%') and 
             ams.unit_repair_detail.date_created >= (CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - interval '24 hours') 
            AND ams.unit_repair_detail.date_created <= (CURRENT_TIMESTAMP AT TIME ZONE 'UTC') 
            and LOWER(ams.unit.model_num) like LOWER('%') 

            order by model_num asc""") 
rows = cur.fetchall() 
print "\nShow me the databases:\n" 
col_names = ["Line","Work order","Model number","Revision","Serial number","Lpn","Level 1","Level 2","Level 3","Level 4","Date started","Date completed"]  

ws.append(col_names) 
for row in rows: 
    ws.append(row) 

この作業が、夏時間の後、すべてを変えたクエリがデシベルに正しいデータを返す...破ったが、私は実行するとそれはPythonスクリプトから作成され、ファイルはまだUTC時間で作成されます。私は何をしているのかわからない、それは私の日付をUTCに変換し直しています...誰かが私を助けることができますか?私はまたに私のAT TIME ZONE UTCを変更しようとした私はまた

>>> import time 
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone 
>>> offset/60/60 * -1 

を試してみましたが、それは運

cur.execute("SET TIME ZONE 'America/Chicago';") 

を中心にUTCに変換して中央のように上部のタイムゾーンを設定しようとしていますCSTと無運... Web上で複数のソリューションを試しましたが、何も動作していないようです。どんな助けでも大歓迎です!!

+0

** openpyxl **とは関係ありません。** tag openpyxl **を削除してください。 – stovfl

+0

コマンドラインから得られる結果は何ですか? Psycopgから得たものと同じですか? –

+0

よく私はIDLEを使用してそれを実行していますが、私が得た結果は、AT TIME ZONE 'UTC'をクエリのSELECT文から削除した場合と同じです。私のxlsxファイル:2017-03-17 11:38:51と "2017-03-17 06:37:57.3-05"のクエリを実行すると、結果がどういう意味なのでしょうか? ?私は決してエラーが発生しない...それは正常に実行されますが、日付はその変換のように無視されている – cocopan

答えて

0

念のために誰もが将来的にこのような何かに実行されます...私は、クエリに

`at time zone 'America/Chicago' 

を以下を追加した場合、それは問題が解決される問題を発見しました。何らかの形でat time zone UTCで十分ではありません。まだ出力タイムゾーンを指定する必要があります

関連する問題