4.8 KiB
machine_translated |
---|
true |
DateTime64
Permet de stocker un instant dans le temps, qui peut être exprimé comme une date de calendrier et une heure d'un jour, avec une précision de sous-seconde définie
Tick taille (précision): 10-précision deuxième
Syntaxe:
DateTime64(precision, [timezone])
En interne, stocke les données comme un certain nombre de ‘ticks’ depuis le début de l'époque (1970-01-01 00: 00: 00 UTC) comme Int64. La résolution des tiques est déterminée par le paramètre de précision. En outre, l' DateTime64
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 DateTime64
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.000’). Le fuseau horaire n'est pas stocké dans les lignes de la table (ou dans resultset), mais est stocké dans les métadonnées de la colonne. Voir les détails dans DateTime.
Exemple
1. Création d'une table avec DateTime64
- tapez la colonne et insérez des données dedans:
CREATE TABLE dt
(
`timestamp` DateTime64(3, 'Europe/Moscow'),
`event_id` UInt8
)
ENGINE = TinyLog
INSERT INTO dt Values (1546300800000, 1), ('2019-01-01 00:00:00', 2)
SELECT * FROM dt
┌───────────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00.000 │ 1 │
│ 2019-01-01 00:00:00.000 │ 2 │
└─────────────────────────┴──────────┘
- Lors de l'insertion de datetime en tant qu'entier, il est traité comme un horodatage Unix (UTC) mis à l'échelle de manière appropriée.
1546300800000
(avec précision 3) représente'2019-01-01 00:00:00'
L'UTC. Cependant, commetimestamp
la colonne aEurope/Moscow
(UTC+3) fuseau horaire spécifié, lors de la sortie sous forme de chaîne, la valeur sera affichée comme'2019-01-01 03:00:00'
- Lors de l'insertion d'une 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 enEurope/Moscow
fuseau horaire et stocké comme1546290000000
.
2. Le filtrage sur DateTime64
valeur
SELECT * FROM dt WHERE timestamp = toDateTime64('2019-01-01 00:00:00', 3, 'Europe/Moscow')
┌───────────────timestamp─┬─event_id─┐
│ 2019-01-01 00:00:00.000 │ 2 │
└─────────────────────────┴──────────┘
Contrairement DateTime
, DateTime64
les valeurs ne sont pas converties depuis String
automatiquement
3. Obtenir un fuseau horaire pour un DateTime64
-le type de la valeur:
SELECT toDateTime64(now(), 3, 'Europe/Moscow') AS column, toTypeName(column) AS x
┌──────────────────column─┬─x──────────────────────────────┐
│ 2019-10-16 04:12:04.000 │ DateTime64(3, 'Europe/Moscow') │
└─────────────────────────┴────────────────────────────────┘
4. Conversion de fuseau horaire
SELECT
toDateTime64(timestamp, 3, 'Europe/London') as lon_time,
toDateTime64(timestamp, 3, 'Europe/Moscow') as mos_time
FROM dt
┌───────────────lon_time──┬────────────────mos_time─┐
│ 2019-01-01 00:00:00.000 │ 2019-01-01 03:00:00.000 │
│ 2018-12-31 21:00:00.000 │ 2019-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘
Voir Aussi
- Fonctions de conversion de Type
- Fonctions pour travailler avec des dates et des heures
- Fonctions pour travailler avec des tableaux
- Le
date_time_input_format
paramètre - Le
timezone
paramètre de configuration du serveur - Opérateurs pour travailler avec des dates et des heures
Date
type de donnéesDateTime
type de données