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
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de changer le type de données de la colonne à partir d'un
varchar
pour le stocker en tant queDate
. Ensuite, lorsque vous la sélectionnez, vous pouvez mettre en forme, de quelque manière que vous le souhaitez. Une façon de le faire serait de créer une nouvelle colonne du type de données correct et convertir les données, puis supprimer l'ancienne colonne. Assurez-vous que le vieux de la colonne n'a pas et les relations de clé étrangère ou vous allez aussi avoir besoin de transférer les personnes de plus de ainsi.De la table type de données est toujours de type varchar. Une mise à jour change simplement la chaîne de caractères, il ne change pas le type de données. Ce que vous devez faire est de (en supposant que toutes les dates sont valables et ce format est 100% compatible):
Et puis arrêter l'insertion régionale et potentiellement problématique des chaînes de caractères. Les littéraux de chaîne représentant dates /datetimes devrait être:
Mais le mieux est tout simplement de s'assurer qu'ils sont de date ou datetime valeurs avant de les donner à SQL Server. Votre application doit être en mesure de le faire sans jamais la conversion à l'arbitraire de la chaîne de format. Jamais, jamais, jamais stocker la date ou datetime comme des chaînes de caractères dans SQL Server. Vous ne gagnez rien et vous perdez beaucoup.