You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
812 B
26 lines
812 B
from django.db.models import DecimalField, DurationField, Func
|
|
|
|
|
|
class IntervalToSeconds(Func):
|
|
function = ""
|
|
template = """
|
|
EXTRACT(day from %(expressions)s) * 86400 +
|
|
EXTRACT(hour from %(expressions)s) * 3600 +
|
|
EXTRACT(minute from %(expressions)s) * 60 +
|
|
EXTRACT(second from %(expressions)s)
|
|
"""
|
|
|
|
def __init__(self, expression, *, output_field=None, **extra):
|
|
super().__init__(
|
|
expression, output_field=output_field or DecimalField(), **extra
|
|
)
|
|
|
|
|
|
class SecondsToInterval(Func):
|
|
function = "NUMTODSINTERVAL"
|
|
template = "%(function)s(%(expressions)s, 'SECOND')"
|
|
|
|
def __init__(self, expression, *, output_field=None, **extra):
|
|
super().__init__(
|
|
expression, output_field=output_field or DurationField(), **extra
|
|
)
|
|
|