
# Champs date et heure

Sept types de champs stockent des dates, des heures, des durées et des horodatages d'audit gérés par le système. Tous partagent les [propriétés de base des champs](/fr/docs/tables-overview#proprietes-de-base-des-champs).

| Type         | Stocke                                                                          |
| ------------ | ------------------------------------------------------------------------------- |
| `date`       | Une date calendaire, avec composante heure optionnelle.                         |
| `datetime`   | Une date et une heure, sensible au fuseau horaire.                              |
| `time`       | Une heure de la journée sans date.                                              |
| `duration`   | Une valeur de temps écoulé / d'heures travaillées (stockée en secondes).        |
| `created-at` | Horodatage défini par le système, capturé à la création d'un enregistrement.    |
| `updated-at` | Horodatage mis à jour par le système, rafraîchi à chaque modification.          |
| `deleted-at` | Horodatage de suppression douce ; NULL signifie que l'enregistrement est actif. |

## `date`

Dates calendaires, incluant éventuellement une composante heure.

| Propriété     | Description                                                                                |
| ------------- | ------------------------------------------------------------------------------------------ |
| `format`      | Chaîne de format d'affichage libre (par ex. `YYYY-MM-DD`, `MM/DD/YYYY`, `DD-MM-YYYY`).     |
| `dateFormat`  | Préréglage d'affichage : `US`, `European` ou `ISO`.                                        |
| `timeFormat`  | Affichage de l'heure : `12-hour` ou `24-hour`.                                             |
| `includeTime` | Booléen. Lorsqu'il vaut `true`, le champ date capture aussi une heure.                     |
| `timezone`    | Identifiant de fuseau horaire IANA (par ex. `UTC`, `America/New_York`, `Europe/London`).   |
| `timeZone`    | Réglage de fuseau horaire acceptant une zone spécifique ou `local` (fuseau du navigateur). |
| `default`     | Valeur de date par défaut pour les nouveaux enregistrements.                               |

```yaml
- { id: 1, name: due_date, type: date, dateFormat: ISO, includeTime: false }
```

## `datetime`

Date et heure. Sensible au fuseau horaire pour une planification inter-régions précise.

| Propriété    | Description                                                                            |
| ------------ | -------------------------------------------------------------------------------------- |
| `format`     | Chaîne de format d'affichage libre (par ex. `YYYY-MM-DD HH:mm`, `MM/DD/YYYY hh:mm A`). |
| `dateFormat` | Préréglage d'affichage : `US`, `European` ou `ISO`.                                    |
| `timeFormat` | Affichage de l'heure : `12-hour` ou `24-hour`.                                         |
| `timezone`   | Identifiant de fuseau horaire IANA.                                                    |
| `timeZone`   | Réglage de fuseau horaire acceptant une zone spécifique ou `local`.                    |
| `default`    | Valeur datetime par défaut pour les nouveaux enregistrements.                          |

```yaml
- { id: 2, name: published_at, type: datetime, timeFormat: 24-hour, timezone: UTC }
```

## `time`

Valeurs d'heure uniquement, sans date. Utilisé pour les horaires, les heures d'ouverture et les créneaux horaires.

| Propriété    | Description                                                 |
| ------------ | ----------------------------------------------------------- |
| `timeFormat` | Affichage de l'heure : `12-hour` ou `24-hour`.              |
| `default`    | Heure par défaut au format `HH:MM:SS` (par ex. `09:00:00`). |

```yaml
- { id: 3, name: start_time, type: time, required: true, timeFormat: 24-hour }
```

## `duration`

Temps écoulé ou heures travaillées, stockés sous forme d'un nombre de secondes.

| Propriété       | Description                                                                     |
| --------------- | ------------------------------------------------------------------------------- |
| `format`        | Chaîne de format d'affichage libre pour la durée.                               |
| `displayFormat` | Préréglage d'affichage : `h:mm`, `h:mm:ss` ou `decimal`.                        |
| `default`       | Valeur de durée par défaut, en **secondes**, pour les nouveaux enregistrements. |

```yaml
- { id: 4, name: work_hours, type: duration, displayFormat: 'h:mm' }
```

## Horodatages d'audit système

`created-at`, `updated-at` et `deleted-at` sont **gérés par le système** — leurs valeurs sont définies automatiquement et ne peuvent pas être éditées manuellement. Ils ne prennent aucune propriété spécifique au type au-delà des propriétés de base des champs (souvent `indexed: true`).

| Type         | Comportement                                                                                                                |
| ------------ | --------------------------------------------------------------------------------------------------------------------------- |
| `created-at` | Capturé une fois lors de la création de l'enregistrement. En lecture seule.                                                 |
| `updated-at` | Rafraîchi automatiquement à chaque modification de l'enregistrement. En lecture seule.                                      |
| `deleted-at` | Défini lors de la suppression douce de l'enregistrement. `NULL` indique un enregistrement actif ; un horodatage = supprimé. |

```yaml
fields:
  - { id: 5, name: created_at, type: created-at, indexed: true }
  - { id: 6, name: updated_at, type: updated-at, indexed: true }
  - { id: 7, name: deleted_at, type: deleted-at, indexed: true }
```

:::callout
**Cycle de vie de la suppression douce.** Ajouter un champ `deleted-at` active le comportement de suppression douce par défaut de Sovrium : supprimer un enregistrement définit l'horodatage au lieu de retirer la ligne, et `/restore` l'efface. Associez-le à [`deleted-by`](/fr/docs/user-audit-fields) pour enregistrer qui a effectué la suppression.
:::
