Cast Bigint to timestamp
Is there a very compelling reason why you are using `TimestampField` at all, instead of `DateTimeField`? It's really intended mostly for Sqlite users, which does not provide a dedicated date/time type.

At any rate, you need to use the postgres `to_timestamp` function here if you insist on doing it this way:

```sql
select extract(week from to_timestamp(1677887000));
```

So probably something like (untested):

```python
.group_by(fn.date_part('week', fn.to_timestamp(Game.ts_played)))
```
Hello,

I am trying to partition some data using `fn.date_part` on a `TimestampField`.
Here is my simplified model:
```
class Game(Model):
    id = PrimaryKeyField()
    ts_played = TimestampField(utc=True, default=None, null=True)
    score = IntegerField(null=True)
```

My full query:
```
results = Game \
   .select(
       fn.date_part("week", Game.ts_played).alias("week"), 
       fn.SUM(Game.score).alias("total_score")
   ) \
   .where(
       Game.ts_played.is_null(False), 
       Game.score.is_null(False),
       Game.ts_played >= 123456789,
       Game.ts_played <= 987654321
   ) \
   .group_by(fn.date_part("week", Game.ts_played)) \
   .order_by(fn.date_part("week", Game.ts_played))
```

I get the following error:
```
peewee.ProgrammingError: function date_part(unknown, bigint) does not exist
```
which does not surprise me because TimestampField is not really a timestamp but rather a Bigint.

I then try to cast the underlying bigint to timestamp, replacing `Game.ts_played` everywhere in the query above with:
```
Game.ts_played.cast("timestamp")
```

I get the error
```
peewee.ProgrammingError: cannot cast type bigint to timestamp without time zone
```


It works fine without casting when I change `ts_played` to be a `DateTimeField`. Is there a convenient way to partition a `TimestampField` in weeks?