Reputation: 21
hi im trying to convert this sql code into django query
select * from KnowledgeManagement_tblknowledge where (14010705 - CreateDate) >=10000 and (register_status = 7 or register_status = 9)
I have done a part of it
knowledges = TblKnowledge.objects.filter(Status__gte=0).filter(Q(register_status=7) | Q(register_status=9))
but this part seems to be a little tricky
where (14010705 - CreateDate) >=10000
BTW CreateDate is an integer filed and saves the current date in solar date and 14010705 is a solar date 14010705 = 1401/07/05
Upvotes: 0
Views: 50
Reputation: 703
Simplify your expression. 14000705 is a hardcoded value, yes?
Equivalent operations: x - y >= z
is the same as x >= y + z
, y <= x - z
, or y + z <= x
.
So, (14010705 - CreateDate) >= 10000
is equivalent to 14010705 + 10000 <= CreateDate
, or 14020705 <= CreateDate
. And if you want to flip the side: CreateDate > 14020705
.
So:
TblKnowledge.objects.filter(CreateDate__gt=14020705)
Upvotes: 1