TimestampField type is different if accessed via query as opposed to directly
`DateTimeField` uses a "datetime" column-type for the backend data-storage. In SQLite in particular, which does not have a date/time column type, it can be much more efficient to store the data as an integer timestamp. The `TimestampField` exists to allow you to work with Python `datetime` objects but store them in the database as integers.

If you are simply trying to store a floating-point timestamp, just use a `FloatField` or a `DoubleField`. > and how is it best avoided?

I have been working through this issue as I was inputting a timestamp from an API and just as you described, I would get a float field and a datetime in the different scenarios.

For anyone else coming across this issue, the solution for me was to convert the timestamp into a datetime object before creating the instance.

In the example by OP, you could use:
`instance = MyModel.create(..., expiry=datetime.utcnow() + timedelta(seconds=86400), ...)`
or similar, depending upon whether you need offset aware dates or not.
If I have a model which has a timestamp field:
```
class MyModel(BaseModel):
    ...
    expiry = TimestampField(utc=True, index=True, default=None)
    ...
```
If I then create an instance using e.g.
```
instance = MyModel.create(..., expiry=time.time() + 86400, ...)
```
then the type of `instance.expiry` is a `float`. However, if I access via a query, then it's a `datetime`:
```
instance = MyModel.select().first()
```
Is there a good reason for this inconsistency, and how is it best avoided?
