ClickHouse/docs/fr/sql-reference/data-types/datetime.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

6.6 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true f865c9653f 48 DateTime

Datetime

Permet de stocker un instant dans le temps, qui peut être exprimé comme une date de calendrier et une heure dune journée.

Syntaxe:

DateTime([timezone])

Plage de valeurs prise en charge: [1970-01-01 00:00:00, 2105-12-31 23:59:59].

Résolution: 1 seconde.

Utilisation Remarques

Le point dans le temps est enregistré en tant que Le timestamp Unix, quel que soit le fuseau horaire ou lheure dété. En outre, l DateTime type peut stocker le fuseau horaire qui est le même pour la colonne entière, qui affecte la façon dont les valeurs de la DateTime les valeurs de type sont affichées au format texte et comment les valeurs spécifiées en tant que chaînes sont analysées (2020-01-01 05:00:01). Le fuseau horaire nest pas stocké dans les lignes de la table (ou dans resultset), mais est stocké dans les métadonnées de la colonne. Une liste des fuseaux horaires pris en charge peut être trouvée dans le Base de données de fuseau horaire IANA. Le tzdata paquet, contenant Base de données de fuseau horaire IANA, doit être installé dans le système. Lutilisation de la timedatectl list-timezones commande pour lister les fuseaux horaires connus par un système local.

Vous pouvez définir explicitement un fuseau horaire DateTime- tapez des colonnes lors de la création dune table. Si le fuseau horaire nest pas défini, ClickHouse utilise la valeur fuseau paramètre dans les paramètres du serveur ou les paramètres du système dexploitation au moment du démarrage du serveur ClickHouse.

Le clickhouse-client applique le fuseau horaire du serveur par défaut si un fuseau horaire nest pas explicitement défini lors de linitialisation du type de données. Pour utiliser le fuseau horaire du client, exécutez clickhouse-client avec l --use_client_time_zone paramètre.

Clickhouse affiche les valeurs dans YYYY-MM-DD hh:mm:ss format de texte par défaut. Vous pouvez modifier la sortie avec le formatDateTime fonction.

Lorsque vous insérez des données dans ClickHouse, vous pouvez utiliser différents formats de chaînes de date et dheure, en fonction de la valeur du date_time_input_format paramètre.

Exemple

1. Création dune table avec un DateTime- tapez la colonne et insérez des données dedans:

CREATE TABLE dt
(
    `timestamp` DateTime('Europe/Moscow'),
    `event_id` UInt8
)
ENGINE = TinyLog;
INSERT INTO dt Values (1546300800, 1), ('2019-01-01 00:00:00', 2);
SELECT * FROM dt;
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00 │        1 │
│ 2019-01-01 00:00:00 │        2 │
└─────────────────────┴──────────┘
  • Lors de linsertion de datetime en tant quentier, il est traité comme un horodatage Unix (UTC). 1546300800 représenter '2019-01-01 00:00:00' LUTC. Cependant, comme timestamp la colonne a Europe/Moscow (UTC+3) fuseau horaire spécifié, lors de la sortie en tant que chaîne, la valeur sera affichée comme '2019-01-01 03:00:00'
  • Lors de linsertion dune valeur de chaîne en tant que datetime, elle est traitée comme étant dans le fuseau horaire de la colonne. '2019-01-01 00:00:00' sera considérée comme étant en Europe/Moscow fuseau horaire et enregistré sous 1546290000.

2. Le filtrage sur DateTime valeur

SELECT * FROM dt WHERE timestamp = toDateTime('2019-01-01 00:00:00', 'Europe/Moscow')
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 00:00:00 │        2 │
└─────────────────────┴──────────┘

DateTime les valeurs de colonne peuvent être filtrées à laide dune WHERE prédicat. Elle sera convertie DateTime automatiquement:

SELECT * FROM dt WHERE timestamp = '2019-01-01 00:00:00'
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00 │        1 │
└─────────────────────┴──────────┘

3. Obtenir un fuseau horaire pour un DateTimecolonne de type:

SELECT toDateTime(now(), 'Europe/Moscow') AS column, toTypeName(column) AS x
┌──────────────column─┬─x─────────────────────────┐
│ 2019-10-16 04:12:04 │ DateTime('Europe/Moscow') │
└─────────────────────┴───────────────────────────┘

4. Conversion de fuseau horaire

SELECT
toDateTime(timestamp, 'Europe/London') as lon_time,
toDateTime(timestamp, 'Europe/Moscow') as mos_time
FROM dt
┌───────────lon_time──┬────────────mos_time─┐
│ 2019-01-01 00:00:00 │ 2019-01-01 03:00:00 │
│ 2018-12-31 21:00:00 │ 2019-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

Voir Aussi

Article Original