Le format d'affichage des dates par défaut est d/m/Y
  ID Date DateTime Timestamp Year Int timestamp Short date Inverse Short Date Short date Txt Text timestamp Date slash
Format SQL %Y-%m-%d %Y-%m-%d %H:%i:%s %Y-%m-%d %H:%i:%s DO NOT USE IT %Y%m%d %d%m%Y %Y%m%d DO NOT USE IT %d/%m/%Y
Format PHP d/m/Y d/m/Y H:i:s Y-m-d H\h i\m\n s\s d/m/Y d/m/Y d/m/Y d/m/Y d/m/Y d/m/Y
Objet 1 1616112000 1616174727 1616174727 2016 1616174727 1616112000 1616112000 1616112000 1616174727 1616112000
VIEW 1 19/03/2021 19/03/2021 17:25:27 2021-03-19 17h 25mn 27s 2016 19/03/2021 19/03/2021 19/03/2021 19/03/2021 19/03/2021 19/03/2021

ExamplesDates.class.php

<?php
/**
 * @author     Richaud Julien "Fladnag"
*/

use salt\Base;
use 
salt\Field;
use 
salt\SqlDateFormat;

/**
 * // @property annotations are used only for IDE autocomplete
 * //     there are not used by SALT framework
 * @property int $id
 * @property int $date
 * @property int $datetime
 * @property int $timestamp
 * @property int $year
 * @property int $int_timestamp
 * @property int $ymd
 * @property int $dmy
 * @property int $ymd_text
 * @property int $timestamp_text
 * @property int $date_slash // date_slash is a VARCHAR in MySQL, but in objet it's a timestamp, so, it's an int
 */
class ExamplesDates extends Base {
    public function 
metadata() {
        
parent::MODEL()
            ->
registerId('id')
            ->
registerTableName('test_dates')
            ->
registerFields(
                
Field::newNumber('id''ID')                                                    ->sqlType('INT PRIMARY KEY AUTO_INCREMENT'),
                
Field::newDate('date''Date'SqlDateFormat::DATE)                             ->sqlType('DATE'),
                
Field::newDate('datetime''DateTime'SqlDateFormat::DATETIME'd/m/Y H:i:s')  ->sqlType('DATETIME'),
                
Field::newDate('timestamp''Timestamp'SqlDateFormat::TIMESTAMP'Y-m-d H\h i\m\n s\s')->sqlType('TIMESTAMP'),
                
// une annee ne peut etre convertie en timestamp. On ne peux donc pas le gérer comme une date
                
Field::newNumber('year''Year')                                                ->sqlType('YEAR'),
                
Field::newDate('int_timestamp''Int timestamp'SqlDateFormat::RAW_TIMESTAMP)  ->sqlType('INT(11)'),
                
Field::newDate('ymd''Short date'SqlDateFormat::SHORT_DATE)                  ->sqlType('INT(11)'),
                
Field::newDate('dmy''Inverse Short Date''%d%m%Y')                           ->sqlType('VARCHAR(11)'),
                
Field::newDate('ymd_text''Short date Txt'SqlDateFormat::SHORT_DATE)         ->sqlType('VARCHAR(11)'),
                
Field::newDate('timestamp_text''Text timestamp'SqlDateFormat::RAW_TIMESTAMP)->sqlType('VARCHAR(11)'),
                
Field::newDate('date_slash''Date slash''%d/%m/%Y')                          ->sqlType('VARCHAR(14)')
            );
    }

    public function 
initAfterCreateTable(salt\DBHelper $db) {
        
$o = new ExamplesDates();
        
// le format de stockage des dates en PHP est TOUJOURS un timestamp
        
$o->date time();
        
$o->datetime time();
        
$o->timestamp time();
        
$o->year 2016// l'année n'est pas considérée comme une date
        
$o->int_timestamp time();
        
$o->ymd time();
        
$o->dmy time();
        
$o->ymd_text time();
        
$o->timestamp_text time();
        
$o->date_slash time();
        return 
$o;
    }
}

dateFormat.php

<?php
/**
 * @author     Richaud Julien "Fladnag"
*/
define('TITLE''Format dates');
include(
'../../lib/base.php');

use 
salt\DatabaseHelper;
use 
salt\DBHelper;
use 
salt\Query;
use 
salt\SqlDateFormat;

include(
RELATIVE.'examples/dao/ExamplesDates.class.php');

$DBtest DBHelper::getInstance(DB_DATABASE_TEST);

$missings DatabaseHelper::missingTables($DBtest, array('ExamplesDates'));
if (
count($missings) > 0) {
    
DatabaseHelper::createTablesFromObjects($DBtest$missings);
}

$q ExamplesDates::query(TRUE);
$q->whereAnd('id''='1);
$r $DBtest->execQuery($q);


/**
 * @var ExamplesDates $testDate
 */
$testDate = \salt\first($r->data);

include(
RELATIVE.'examples/layout/header.php');
?>

<div>Le format d'affichage des dates par défaut est <?= salt\DEFAULT_DATE_DISPLAY_FORMAT ?></div>

<table style="white-space: nowrap">
    <tr>
        <th>&nbsp;</th>
<?php foreach($r->columns as $col) {?>
        <th><?= ExamplesDates::COLUMN()->$col ?></th>
<?php ?>
    </tr>
    <tr>
        <th>Format SQL</th>
<?php     foreach($r->columns as $col) { ?>
        <td><?= SqlDateFormat::resolve($testDate::MODEL()->{$col}->format?></td>
<?php     ?>
    </tr>
    <tr>
        <th>Format PHP</th>
<?php     foreach($r->columns as $col) { ?>
        <td><?= $testDate::MODEL()->{$col}->displayFormat ?></td>
<?php     ?>
    </tr>
    <tr>
        <th>Objet</th>
<?php     foreach($r->columns as $col) { ?>
        <td><?= $testDate->$col ?></td>
<?php     ?>
    </tr>
    <tr>
        <th>VIEW</th>
<?php     foreach($r->columns as $col) { ?>
        <td><?= $testDate->VIEW->$col ?></td>
<?php     ?>
    </tr>
</table>

<div>
    <h3>ExamplesDates.class.php</h3>
    <?php highlight_file(RELATIVE.'examples/dao/ExamplesDates.class.php'); ?>

    <br/>
    <h3><?= \salt\last(explode(DIRECTORY_SEPARATOR__FILE__)) ?></h3>
    <?php highlight_file(__FILE__); ?>
</div>

<?php  include(RELATIVE.'examples/layout/footer.php');