2017-06-21 49 views
3

我有我的查詢與日期Python 2.7版我有日期格式問題

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

##chart excel advanced 
import mysql.connector 
import arrow 
from xlsxwriter.workbook import Workbook 
##/home/andrews/Downloads/GRAILS/tarjetasadicionales/web-app/tempFiles/ 
workbook = Workbook('output2.xlsx') 
worksheet = workbook.add_worksheet() 
##ADD A CHART SHEET 
chartsheet = workbook.add_chartsheet() 
conn = mysql.connector.connect(
     user='root', 
     password='root', 
     host='127.0.0.1', 
     database='adicionales') 


cur = conn.cursor() 

##hire_start = arrow.get('2017-06-14 00:00:00') 
##hire_start.format('YYYY-MM-DD HH:mm:ss ZZ') 
##hire_end = arrow.get('2017-06-14 23:59:59') 
##hire_end.format('YYYY-MM-DD HH:mm:ss ZZ') 

query = ("""select 
concat(substr(c.fecha_gestion, 9, 2),'/',substr(c.fecha_gestion, 6, 
2),'/',substr(c.fecha_gestion, 1, 4)) as 'Fecha Gestión' 
, case substr(c.fecha_gestion, 6, 2) 
when '01' then 'ENERO' 
when '02' then 'FEBRERO' 
when '03' then 'MARZO' 
when '04' then 'ABRIL' 
when '05' then 'MAYO' 
when '06' then 'JUNIO' 
when '07' then 'JULIO' 
when '08' then 'AGOSTO' 
when '09' then 'SEPTIEMBRE' 
when '10' then 'OCTUBRE' 
when '11' then 'NOVIEMBRE' 
when '12' then 'DICIEMBRE' 
else 'NO APLICA' 
end as 'Mes Gestión' 
, substr(c.fecha_gestion, 1, 4) as 'Año Gestión' 
, concat(substr(c.fecha_gestion, 9, 2),'/',substr(c.fecha_gestion, 6, 
2),'/',substr(c.fecha_gestion, 1, 4)) as 'Fecha Consolidado' 
, 'PLUS WIRELESS' as 'Nombre call center' 
, upper(c.nombre_vendedor) as 'Usuario' 
, 'CEDULA' as 'Tipo_Id' 
, a.cedula as 'Id_adicional' 
, upper(a.nacionalidad) as 'Nacionalidad' 
, upper(a.primer_apellido) as 'Primer_apellido' 
, upper(a.segundo_apellido) as 'Segundo_apellido' 
, upper(a.primer_nombre) as 'Primer_nombre' 
, upper(a.segundo_nombre) as 'Segundo_nombre' 
, upper(a.nombre_tarjeta) as 'Nombre_tarjeta' 
, a.fecha_nacimiento as 'Fecha_nacimiento' 
, upper(a.sexo) as 'Sexo' 
, upper(a.estado_civil) as 'Estado_civil' 
, upper(a.parentesco) as 'Parentesco' 
, upper(a.observaciones) as 'Observaciones' 
, a.cupo_otorgado as 'Cupo' 
, c.cuenta as 'Cuenta_titular' 
, c.identificacion as 'Id_titular' 
, upper(c.producto) as 'Producto' 
, upper(concat(c.apellidos,' ',c.nombres)) as 'Nombre_completo_titular' 
, upper(c.provincia_trab) as 'Provincia_trabajo' 
, upper(c.ciudad_trab) as 'Ciudad_trabajo' 
, upper(c.calle_principal_trab) as 'Avenida/Calle principal_trabajo' 
, upper(c.numeracion_trab) as 'Numeración_trabajo' 
, upper(c.calle_transversal_trab) as 'Calle_transversal_trabajo' 
, upper(c.sector_trab) as 'Sector/Barrio_trabajo' 
, upper(c.tipo_trab) as 'Casa_departamento_trabajo' 
, upper(c.referencia_trab) as 'Referencia_trabajo' 
, upper(concat(calle_principal_trab, ' ', numeracion_trab, ' ', 
calle_transversal_trab, ' ', sector_trab, ' ', referencia_trab)) as 
'Información_concatenada_trabajo' 
, c.caracteres_trab as 'Caracteres_trabajo' 
, upper(c.provincia_domic) as 'Provincia_domicilio' 
, upper(c.ciudad_domic) as 'Ciudad_domicilio' 
, upper(c.calle_principal_domic) as 'Avenida/Calle principal_domicilio' 
, upper(c.numeracion_domic) as 'Numeración_domicilio' 
, upper(c.calle_transversal_domic) as 'Calle_transversal_domicilio' 
, upper(c.sector_domic) as 'Sector/Barrio_domicilio' 
, upper(c.tipo_vivienda) as 'Casa_departamento_domicilio' 
, upper(c.referencia_domic) as 'Referencia_domicilio' 
, upper(concat(calle_principal_domic, ' ', numeracion_domic, ' ', 
calle_transversal_domic, ' ', sector_domic, ' ', referencia_domic)) as 
'Información_concatenada_trabajo' 
, c.caracteres_dom as 'Caracteres_domicilio' 
, upper(c.entrega) as 'Trabajo/Domicilio' 
, upper(c.nombre_contacto) as 'Persona de contacto' 
, upper(c.rango_visita) as 'Rango de visita' 
, c.celular_contacto as 'Celular' 
, c.telefono_trab_contacto as 'Telefono_trabajo' 
, c.telefono_dom_contacto as 'Telefono_casa' 
, c.estado_cta_digital as 'EmisionEstadoCtaDigital' 
from clientes c, adicional a 
where c.subestado_gestion_id in (select id from subestado where type = 
'Exitoso') 
and c.id = a.clientes_id 
and c.fecha_gestion between '2017-05-04 00:00:00' and '2017-05-08 
23:59:59' 
""") 

在這裏,我有日期格式「2017年5月4日00:00這個問題到底有問題:00'和'2017-05-08 23:59:59' 刪除這段代碼查詢的作品,我可以看到'2017-05-04 00:00:00'之間的Excel文件和c.fecha_gestion和'2017年5月8日23:59:59'

cur.execute(query) 
results = cur.fetchall() 
print(results) 

chart = workbook.add_chart({'type': 'line'}) 
chartsheet.set_chart(chart) 

for i, row in enumerate(results): 
    for j, value in enumerate(row): 
     worksheet.write(i, j, row[j]) 

# Insert the chart into the worksheet IN D1. 
worksheet.insert_chart('Z1', chart) 
##SHEET NUM AND THE VALUES TO COUNT FORM   
chart.add_series({'values': '=Sheet1!$B$1:$B$59649'}) 
workbook.close() 

這是數據庫的鏈接

THIS IS THE LINK OF THE DATABASE

+0

你得到一個異常時,您包括日期範圍作爲你的where子句的一部分? – Poosh

+0

我沒有得到任何錯誤,但在我只是沒有得到的數據,但當我評論此代碼和c.fecha_gestion之間'2017-05-04 00:00:00'和'2017-05-08 23 :59:59' 查詢我會得到所有的結果,但我需要的是以這種格式插入數據2017-05-04 00:00:00 – Melany

+0

這是令人費解的,因爲語法看起來正確。在執行查詢之前,您可以嘗試添加'conn.raise_on_warnings = True'。默認情況下,它不會拋出異常,因此可能會提供一些關於爲什麼在'2017-05-04 00:00:00'和'2017-05-08 23:59:59'之間出現問題的信息。 – Poosh

回答

0

我跑下面的查詢:

SELECT c.fecha_gestion FROM clientes c where c.id in (select a.clientes_id from adicional a) order by c.fecha_gestion asc 

的日期範圍c.fecha_gestion2017-05-12 16:37:182017-06-13 09:49:00

這些都大於between聲明中指定的最大日期2017-05-08 23:59:59

c.id = a.clientes_id似乎是限制您查詢的日期範圍內的記錄clientes

編輯

以下是運行你對數據轉儲查詢的結果,沒有between條款,添加列c.fecha_gestion到所選列,並與order by c.fecha_gestion asc

查看c.fecha_gestion2017-05-12 16:37:18的最小日期值。因此,對於這個查詢,也有具有2017-05-04 00:00:002017-05-08 23:59:59之間的值c.fecha_gestion沒有行,這就是爲什麼你沒有結果與between條件:

query and result grid

+0

嗨,那裏,謝謝你的答案,但我上面發佈的查詢是有效的MYSQL,但我不知道它爲什麼不與PYTHON合作,我還添加了數據庫,所以有人請幫助我! – Melany

+0

你也可以包含表'subestado'嗎?加載數據庫後,由於該表似乎丟失了,所以我在執行查詢時出錯,所以我不得不將這部分刪除。 – Poosh

+0

嗨,謝謝這是其他數據庫.https://drive.google.com/open?id = 0BxTOBXhCgP8-RWJMY3RzSVlWRXc – Melany