TimestampField reads `0` as `null`
This is confusing to me -- why use `0` instead of `null`? A zero timestamp corresponds to midnight Jan 1st, 1970. Not sure what you're asking. `0` is not the same as `null`, but the `TimestampField` thinks they are. I think it's a bug. I guess what I'm asking is why you're using `0` instead of `NULL`, when `0` for a timestamp represents midnight jan 1st, 1970? Because I want a non-null value there. `Null` means "no value", `0` means "midnight, Jan 1st, 1970".

Why should the ORM read `0` as `None`?  That's fine -- as long as you were aware of the distinction. Added support for specifying the zero value for the `TimestampField`. You can now write:

```python
timestamp = TimestampField(zero_value=datetime.fromtimestamp(0))
``` Thanks!
I guess this is the relevant line https://github.com/coleifer/peewee/blob/master/peewee.py#L1346

At least for mysql, if we have a TimestampField that's defined like this:
```
not_before = TimestampField(default=0, utc=True, null=False)
```
the DB type is `int(11) NOT NULL`.

If the DB gets a value of `0` (For any reason, like "I think it's a valid value" or "The data is already there"), trying to update the value fails:
```
x = Task.get(...)
x.status = 'good'
x.save()

      pymysql.err.IntegrityError: (1048, "Column 'not_before' cannot be null")
```

I'm not sure about the reasoning behind this, as the code looks intentional.