Como calcular dias entre datas yyyy-mm-aa num campo integer

19 views
Skip to first unread message

everton rocha

unread,
Aug 17, 2017, 5:31:45 PM8/17/17
to web2py-users
db.define_table("servicos",
                Field('empresa', 'reference empresa', label='Empresa'),
                Field('cliente', 'reference cliente', label='cliente'),
                Field("contrat_ini","date",label='Inicio do Contrato'),
                Field("contrat_fim","date", label='Fim do Contrato'),
                Field("tempo_ctr","integer")



def ver_todos_projetos():
    db.servicos.id.readable = False
    query = ((db.servicos.id > 0))
    trabalhos = db(db.servicos.contrat_fim == None).select()
    for r in trabalhos:
        db(db.servicos.id == r.id).update(tempo_ctr = (contrat-fim - contrat_ini).date)
        fields = (db.servicos.id, db.servicos.empresa, db.servicos.contrato, db.servicos.cliente, db.servicos.bacia, db.servicos.contrat_ini, db.servicos.contrat_fim, db.servicos.tempo_ctr)
        headers = {'servicos.id': 'ID',
               'servicos.empresa': 'Empresa',
               'servicos.cliente': 'Cliente',
               'servicos.contrato': 'Contrato',
               'servicos.bacia': 'Bacia',
               'servicos.contrat_ini': 'Data Início Contrato',
               'servicos.contrat_fim': 'Data do Fim do Contrato',
               'servicos.tempo_ctr': 'Tempo em Dias'}
    grid = SQLFORM.grid(query=query, fields=fields, headers=headers, maxtextlength=64, paginate=25, deletable= False, user_signature = False)
    return dict(grid=grid)

Que estou fazendo errado?????

Alguma ajuda?

Leonel Câmara

unread,
Aug 17, 2017, 7:26:25 PM8/17/17
to web2py-users
Everton a maneira mais fácil de fazeres isto é com um campo computado

# Modelo

db.define_table("servicos",
                Field('empresa', 'reference empresa', label='Empresa'),
                Field('cliente', 'reference cliente', label='cliente'),
                Field("contrat_ini","date",label='Inicio do Contrato'),
                Field("contrat_fim","date", label='Fim do Contrato'),
                Field("tempo_ctr","integer", writable=False, compute= lambda row: (row.contrat_fim - row.contrat_ini).days)
)

# Controlador

def ver_todos_projetos():
    db.servicos.id.readable = False
    headers = {'servicos.id': 'ID',
               'servicos.empresa': 'Empresa',
               'servicos.cliente': 'Cliente',
               'servicos.contrato': 'Contrato',
               'servicos.bacia': 'Bacia',
               'servicos.contrat_ini': 'Data Início Contrato',
               'servicos.contrat_fim': 'Data do Fim do Contrato',
               'servicos.tempo_ctr': 'Tempo em Dias'}
    grid = SQLFORM.grid(db.servicos, headers=headers, maxtextlength=64, paginate=25, deletable= False, user_signature = False)
    return dict(grid=grid)


Everton next time please speak english as this is an international board, if your english is bad that's okay, bad english is the most spoken language in the world.
Reply all
Reply to author
Forward
0 new messages