la conversion de type varchar de format de date dans sql server

J'ai un tableau avec deux colonnes de date. Toutefois, les colonnes sont de type varchar. J'ai besoin pour le convertir en comme format de date.

L'échantillon de données est comme ceci:

Numéro De Compte | De La Date D'Enregistrement | Système De Changement D'État De La Date De

01740567715 | 10-JUIL-13 | 30-JUIL-13 12.53.32.000000000 PM

Je veux à la fois de ces colonnes comme ceci: 10-Juil-2013.

Pour la Date d'Inscription, je suis en utilisant ce code:

Update [dbo].[SysDataV2] 
Set ["REGISTRATION_DATE"]= convert(datetime, (["REGISTRATION_DATE"]), 106)

Mais il est shwoing le résultat varchar et montrant également erronée format.

Pour le Système de Changement de Statut Jour, je suis à l'aide de code suivant:

update [dbo].[SysData] 
Set ["KYC_STATUS_CHANGED_DATE"]= REPLACE(CONVERT(datetime,convert(datetime,left(["KYC_STATUS_CHANGED_DATE"],9),103),106),' ' ,'-')

Les deux sont en train de changer le format de date d'un certain type (pas mon format attendu), mais dans la structure de la table, ils sont toujours affichés comme varchar.

Ce que je fais mal ici?

  • La table type de données est toujours de type varchar. Une mise à jour modifie la chaîne stockée, mais il n'a pas magiquement changer le type de données.
  • Donc, dois-je exécuter une requête de sélection avec la conversion de la date là?
  • Non, vous avez besoin de changer la colonne du type de données une fois que les données sont correctes.
  • Je suggère la création d'une nouvelle datacolumn de type DateTime et l'exécution d'une commande de mise à jour pour convertir les données varchar DateTime dans la nouvelle colonne. Une fois les données est la façon dont vous le souhaitez, vous pouvez supprimer la colonne d'origine