PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara saya menulis kueri Django yang melakukan matematika tanggal ketika dieksekusi sebagai PostGres SQL?

Anda dapat menambahkan fungsi database ke Django , untuk ini Anda dapat menambahkan fungsi untuk pernyataan INTERVAL di postgres

class IntervalSeconds(Func):

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

Anda kemudian dapat menggunakan fungsi ini dalam kueri Anda untuk menambahkan detik ke datetime

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

Output dari IntervalSeconds fungsinya adalah 1 detik Interval postgres dikalikan dengan bidang yang dilewatinya. Ini dapat ditambahkan dan dikurangi dari stempel waktu. Anda dapat membuat Interval generic generik fungsi yang tidak hanya membutuhkan waktu beberapa detik, ini sedikit lebih rumit

ExpressionWrapper diperlukan untuk mengonversi hasilnya menjadi objek datetime




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan GROUP BY + CASE

  2. SqlAlchemy(Flask+Postgres):Bagaimana cara memperbarui hanya atribut tertentu dari bidang json?

  3. Graf asiklik terarah:temukan semua jalur dari simpul tertentu

  4. Tentang kegunaan indeks ekspresi

  5. Cara memfilter hasil kueri di PostgreSQL