sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur skriver jag en Django-fråga som daterar matematik när den körs som PostGres SQL?

Du kan lägga till databasfunktioner till Django , för detta kan du lägga till en funktion för INTERVAL-satsen i postgres

class IntervalSeconds(Func):

    function = 'INTERVAL'
    template = "(%(expressions)s * %(function)s '1 seconds')"

Du kan sedan använda den här funktionen i dina frågor för att lägga till sekunder till en datumtid

YourModel.objects.annotate(
    attr=ExpressionWrapper(
        F("article__created_on") + IntervalSeconds(F("article__websitet__avg_time_in_seconds_to_reach_ep")),
        output_field=models.DateTimeField()
    ),
)

Utdata från IntervalSeconds funktionen är en 1 sekunds Postgres-intervall multiplicerat med fältet som skickas till den. Detta kan läggas till och subtraheras från en tidsstämpel. Du kan skapa ett allmänt Interval funktion som inte bara tar sekunder, det här är lite mer komplext

ExpressionWrapper krävs för att konvertera resultatet till ett datetime-objekt




  1. Webrick är väldigt långsam med att svara. Hur snabbar man upp det?

  2. 8000 uppdateringar per sekund med mysql

  3. Hur man väljer en relaterad grupp av objekt i Oracle SQL

  4. Konvertera MySQL till MS Access