Ma ligne Datetime ressemble à quelque chose comme ce format
Y. 18 M. 11 D. 01
Elle peut se lire comme ceci
1811011439 1811011439 1811011439 1811011439 1811011439 1811011439
à la première ligne comme vous le voyez
Pourrait-on s'il vous plaît me guider comment puis-je le convertir en format lisible par date.
3 Réponses :
Vous souhaitez convertir une représentation sous forme de chaîne de la valeur datetime (stockée sous forme de bigint) en un format lisible. Dans ce cas, vous pouvez CAST
la partie date de la chaîne / bigint à une valeur DATE
:
SELECT CAST(SUBSTRING(CAST(1811011439 AS VARCHAR), 1, 6) + ' ' + SUBSTRING(CAST(1811011439 AS VARCHAR), 7, 2) + ':' + SUBSTRING(CAST(1811011439 AS VARCHAR), 9, 2) AS DATETIME) -- 2018-11-01 14:39:00.000
Je recommande d'utiliser un DATETIME colonne au lieu d'une colonne BIGINT
pour stocker des valeurs aime ça. Avec le SELECT
suivant, vous obtenez toutes les valeurs de DATETIME
:
SELECT CAST(LEFT(CAST(1811011439 AS VARCHAR), 6) AS DATE) -- 2018-11-01
Pour autant que je comprends la demande, votre date au format VARCHAR sous la forme "AAMMJJHHmm", donc, le moyen le plus simple est:
SELECT CAST(SUBSTRING(YourField, 1, 6) AS DATE) FROM YourTable;
Ou si c'est dans un champ dans une table:
DECLARE @TextDate AS NVARCHAR(20) = '1811011439'; SELECT CAST(SUBSTRING(@TextDate, 1, 6) AS DATE);
Je pense que votre colonne n'est pas un type de données BIGINT
, c'est VARCHAR
et vous voulez en séparer la date
SELECT CAST(LEFT(CAST(YourColumn AS VARCHAR), 6) AS DATE) SELECT CAST(LEFT(YourColumn, 6) AS DATE) --It works too
S'il s'agit vraiment d'une colonne BIGINT
, convertissez-la simplement en VARCHAR
, divisez-la puis CAST
en DATE
p>
SELECT CAST(LEFT('1811011439', 6) AS DATE)
Pourtant, la bonne réponse à cela est d'utiliser le bon type de données qui est DATETIME
Cela ressemble certainement à une valeur "datetime" très étrange - quelle est la logique derrière cela?
Double possible de Convertir de Bigint en valeur datetime
Le nombre
BIGINT
ici représente quoi? millisecondes? secondes? quelle est la logique ici? Aussi qu'avez-vous essayé de résoudre?La bonne chose à faire est de changer la façon dont ces données sont stockées - s'il s'agit d'une valeur datetime, elle doit être stockée en tant que DateTime2, pas comme autre chose.
Oh super - années à 2 chiffres. N'avons-nous rien appris de l'an 2000?