es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la manera correcta de almacenar la fecha/hora en una base de datos basada en Gremlin como Neptune?

¿Cuál es la forma correcta de almacenar una marca de fecha/hora en una base de datos basada en Gremlin como Amazon Neptune?

Cuando intento lo siguiente en Python

current_timestamp = datetime.datetime.now()
g.E('d').property('otp_verified_on', current_timestamp).next()

me da una salida similar a

'otp_verified_on': datetime.datetime(2021, 11, 23, 9, 47, 30, 173000)

así que hago una conversión a string

current_timestamp = datetime.datetime.now()
g.E('d').property('otp_verified_on', str(current_timestamp)).next()

para obtener el siguiente resultado

'otp_verified_on': '2021-11-23 08:27:45.867543'

Mis consultas se basan en operaciones de comparación de fechas gte, lte, etc…

¿Cuál es la mejor/forma correcta de implementarlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La forma correcta de almacenar marcas de fecha/hora en una base de datos basada en Gremlin como Amazon Neptune sería utilizando el formato ISO 8601, que es un estándar para representar valores de fecha y hora. Este formato proporciona la ventaja de ser fácilmente comparables y clasificables.

    En Python, puedes convertir un objeto datetime en una cadena con formato ISO 8601 utilizando el método isoformat(). Aquí tienes un ejemplo:

    current_timestamp = datetime.datetime.now()
    iso_timestamp = current_timestamp.isoformat()
    
    g.E('d').property('otp_verified_on', iso_timestamp).next()
    

    Este enfoque evita la necesidad de convertir manualmente a una cadena y asegura que el valor de datetime se almacene de manera consistente.

    Al realizar consultas de comparación de fechas como gte y lte, puedes utilizar los predicados time o range en Gremlin. Aquí tienes un ejemplo de consulta:

    g.V().hasLabel('person').has('dob', time.lte('2000-01-01T00:00:00Z'))
    

    Esta consulta encuentra todas las personas cuya fecha de nacimiento es el 1 de enero de 2000 o anterior. Ten en cuenta que el valor de datetime se proporciona en formato ISO 8601 y está entre comillas.

Comments are closed.