# How to compare Date using Between

**URL:** https://discuss.tryton.org/t/how-to-compare-date-using-between/3854
**Category:** Developer
**Created:** [February 24, 2021, 7:48pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854 "2021-02-24T19:48:16Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![yensei](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/yensei/32/1327_2.png) [@yensei](https://discuss.tryton.org/u/yensei)
#### Post date: [February 24, 2021, 7:48pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/1 "2021-02-24T19:48:16Z")

</div>

Hi,

I’m working with a query using Between to compare my dates, but i got this error

```auto
Traceback (most recent call last):
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/protocols/dispatcher.py", line 181, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/model/modelsql.py", line 159, in wrapper
    return func(cls, *args, **kwargs)
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/model/modelsql.py", line 674, in create
    cls._validate(sub_records)
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/model/modelstorage.py", line 76, in wrapper
    return func(*args, **kwargs)
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/model/modelstorage.py", line 1344, in _validate
    cls.validate(records)
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/modules/account_invoice_py/invoice_py.py", line 143, in validate
    cursor.execute(*stamped.select(Count(Literal('*')),
  File "/home/julio/Development/workspace-python/tryton/facturacion/trytond/trytond/backend/postgresql/database.py", line 69, in execute
    cursor.execute(self, sql, args)
psycopg2.ProgrammingError: can't adapt type 'Date'

```

My query:

```auto
cursor.execute(*stamped.select(Count(Literal('*')), 
                                       where=(
                                            And((
                                                stamped.state.like('active'),
                                                Or((
                                                    Between(cls.begin_date,stamped.begin_date, stamped.end_date),  
                                                    Between(cls.end_date, stamped.begin_date, stamped.end_date)
                                                ))                                                
                                            ))
                                        )                
                                    ))

```

All my fields are fields.Date.

I am newbie using python-sql and still don’t understand it well.

Thanks for your help..

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [February 24, 2021, 7:58pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/2 "2021-02-24T19:58:43Z")

</div>

You can not use Field instance in SQL query, you must use Column which can be retrieve from `sql_column` method.  
Anyway I do not see why using plain SQL query when you can do the same using `ModelStorage.search` with the parameter `count=True`.

---

<div class="post-metadata">

### Author: ![yensei](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/yensei/32/1327_2.png) [@yensei](https://discuss.tryton.org/u/yensei)
#### Post date: [February 24, 2021, 8:27pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/3 "2021-02-24T20:27:49Z")

</div>

I just try with sql plain because until now that was the only way that I known. I will try to convert my dates fields to build my query.

Search method allows only And operator? Or can I use OR too?

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [February 24, 2021, 8:36pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/4 "2021-02-24T20:36:43Z")

</div>

> [@yensei](#):
>
> Search method allows only And operator? Or can I use OR too?

Both see [Domain — Tryton server](https://docs.tryton.org/projects/server/en/latest/topics/domain.html#topics-domain)

---

<div class="post-metadata">

### Author: ![yensei](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/yensei/32/1327_2.png) [@yensei](https://discuss.tryton.org/u/yensei)
#### Post date: [February 24, 2021, 8:45pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/5 "2021-02-24T20:45:58Z")

</div>

So I just need treat it like I do with domain parameter of fields? 🤔

---

<div class="post-metadata">

### Author: ![udono](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/udono/32/2114_2.png) [@udono](https://discuss.tryton.org/u/udono)
#### Post date: [February 24, 2021, 10:11pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/6 "2021-02-24T22:11:22Z")

</div>

Yes, domains are used to build search filters and also field constraints.

---

<div class="post-metadata">

### Author: ![yensei](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/yensei/32/1327_2.png) [@yensei](https://discuss.tryton.org/u/yensei)
#### Post date: [February 24, 2021, 10:40pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/7 "2021-02-24T22:40:22Z")

</div>

It worked.

I used search and my code looks so clean and readable with it.

Thanks,

---

<div class="post-metadata">

### Author: ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)
#### Post date: [March 26, 2021, 10:40pm UTC](https://discuss.tryton.org/t/how-to-compare-date-using-between/3854/8 "2021-03-26T22:40:26Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
