Bulk update of all null DateTimeFields fails
This is a Postgres limitation - for some reason Postgres does not behave well with certain data-types in these expressions. Related issues:

* #2457
* #2308
* #2292
* https://dba.stackexchange.com/questions/228046/why-do-i-need-to-cast-null-to-column-type/228058#228058

I cannot really offer a solution at this time, other than to suggest using individual updates / calls to `save()`. Doing updates in a loop inside a transaction may be just as fast (if not faster) than the `bulk_update` anyways. Thank you, appreciate the information! :pray: 
Hello there! :wave: 

I believe I've encountered a bug in an otherwise terrific library. 

Summary
---
When performing a bulk update of models, where the model has a nullable `DateTimeField` and every model in the list  to `bulk_update` has this field set to `None` will result in a an error complaining about it being of type timestamp but expression is of type text.

Example
---
```python
def test_bulk_update_of_all_null_datetime_fields(postgresdb):
    class Foobar(peewee.Model):
        class Meta:
            database = db

        col1 = peewee.IntegerField(primary_key=True)
        col2 = peewee.DateTimeField(null=True,)

    Foobar.create_table()

    models = [Foobar(col1=i, col2=datetime.now()) for i in range(2)]
    Foobar.bulk_create(models)

    models = [Foobar(col1=i, col2=None) for i in range(2)]
    try:
        Foobar.bulk_update(models, fields=["col2"])
    except:
        db.rollback()

    # Updating a single model in the list to non-null will work fine.
    models[0].col2 = datetime.now()
    Foobar.bulk_update(models, fields=["col2"])
```

This is the SQL all nulls generate
```sql
UPDATE "foobar"
SET "col2" = CASE "foobar"."col1" WHEN 0 THEN NULL WHEN 1 THEN NULL END
WHERE ("foobar"."col1" IN (0, 1))
```

Which will result in 
```bash
2021-10-02 11:07:19.084 UTC [60] ERROR:  column "col2" is of type timestamp without time zone but expression is of type text at character 30
2021-10-02 11:07:19.084 UTC [60] HINT:  You will need to rewrite or cast the expression.
2021-10-02 11:07:19.084 UTC [60] STATEMENT:  UPDATE "foobar" SET "col2" = CASE "foobar"."col1" WHEN 0 THEN NULL WHEN 1 THEN NULL END WHERE ("foobar"."col1" IN (0, 1))
```

manually modifying the query to cast the nulls to timestamps will work
```sql
UPDATE "foobar"
SET "col2" = CASE "foobar"."col1" WHEN 0 THEN NULL::timestamp WHEN 1 THEN NULL::timestamp END
WHERE ("foobar"."col1" IN (0, 1))
```

---

System ubuntu 18.04
peewee version 3.14.4
Python3.7
Postgresql 12