Store dates, with or without time, and date ranges.
Date Field - Datetime module
Pick whether you need to store a time when you add the field.
Image

Date Range Field - Datetime Range module
Created, Changed Fields
Default date create and changed fields on node content.
These fields are added in Node::baseFieldDefinitions().
$fields['created'] = BaseFieldDefinition::create('created')
->setLabel(t('Authored on'))
->setDescription(t('The time that the node was created.'))
->setRevisionable(TRUE)
->setTranslatable(TRUE)
->setDisplayOptions('view', [
'label' => 'hidden',
'type' => 'timestamp',
'weight' => 0,
])
->setDisplayOptions('form', [
'type' => 'datetime_timestamp',
'weight' => 10,
])
->setDisplayConfigurable('form', TRUE);
$fields['changed'] = BaseFieldDefinition::create('changed')
->setLabel(t('Changed'))
->setDescription(t('The time that the node was last edited.'))
->setRevisionable(TRUE)
->setTranslatable(TRUE);
ChangedItem extends CreatedItem, which extends TimestampItem.
namespace Drupal\Core\Field\Plugin\Field\FieldType;
class ChangedItem extends CreatedItem {}
namespace Drupal\Core\Field\Plugin\Field\FieldType;
class CreatedItem extends TimestampItem {}
These are stored in node_field_data as a timestamp.
Image
