0
votes

Sql str_to_date

J'ai des problèmes avec le code suivant:

INSERT into `fun` ( funner)
SELECT YEAR(STR_TO_DATE(SUBSTRING(time,1,4), '%Y')) 
FROM `orig` 


2 commentaires

Pourquoi sous-chaîne (heure, 1,4) n'est pas suffisant?


@ Salman A parce que je insère les données dans une colonne avec un type de données de date / heure


3 Réponses :


0
votes

Vous pouvez convertir la soustrine (heure, 1,4) en intiqueger: xxx

Il n'est pas nécessaire de la convertir d'abord à une date, puis de convertir en Entier.
Je suppose que vous devez retourner une valeur entière puisque vous utilisez la fonction d'année (). de
Si ce n'est pas un simple Sélectionnez la sous-chaîne (heure, 1,4) de Orig fera.


0 commentaires

1
votes

Je recommanderais d'utiliser l'un des DataTypes MySQL MySQL habituels , au lieu de la rarement utilisée année code> DataType : date code>, DateTime code> et horodatage code>.

Si vous voulez tourner votre Chaîne à une date code> DataType, alors: p> xxx pré>

Vous pouvez utiliser la fonction année () code> à cette date et Il retournera un integer code> valeur: p> xxx pré>

Enfin: Si tout ce que vous voulez, obtenez l'année à partir d'une date stockée en tant que chaîne, alors vous pouvez directement extraire la chaîne en utilisant substr code>: p>

SUBSTR(my_column, 1, 4)


2 commentaires

@ GMB, je dois être mal compris l'option "Année (4)" sous la section Date et heure comme type? J'ai aussi le temps et l'année en plus de date, datetime et horodatage


@Hannahgarcia: Mon erreur! J'ai mis à jour ma réponse un peu.



0
votes

Qu'est-ce que heure code> ressemble? Si année code> a l'année de type de données, vous pouvez insérer une date dans la colonne:

INSERT into `clean` (year)
    SELECT DATE(CONCAT(SUBSTRING(time, 1, 4), '-01-01')) 
    FROM `orig` ;


0 commentaires