sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan skriver jeg en Django-forespørgsel, der daterer matematik, når den udføres som PostGres SQL?

Du kan tilføje databasefunktioner til Django , til dette kan du tilføje en funktion til INTERVAL-sætningen i postgres

class IntervalSeconds(Func):

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

Du kan derefter bruge denne funktion i dine forespørgsler til at tilføje sekunder til en dato/klokkeslæt

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

Outputtet af IntervalSeconds funktionen er et 1 sekunds Postgres-interval ganget med det felt, der sendes til den. Dette kan tilføjes og trækkes fra et tidsstempel. Du kan lave et generisk Interval funktion, der ikke kun tager sekunder, det er lidt mere komplekst

ExpressionWrapper er påkrævet for at konvertere resultatet til et datetime-objekt




  1. Sådan aktiveres komprimering på en eksisterende tabel i SQL Server (T-SQL)

  2. MYSQL:Sequential Number Table

  3. Finde duplikerede poster i en tabel

  4. Tilstandserklæring - Php Mysqli