2011-12-29 3 views
0

J'ai des dates dans une colonne de base de données mais le format de date n'est pas le même. Certains sont mm-dd-yyyy et certains sont mm.dd.yy ou autre. Comment le formater dans le même type en utilisant une requête?Mettre à jour la colonne de date et mettre en forme la date au même modèle

J'utilise SQL Server 2008.

+4

Quel ** type de données ** est cette colonne ?? Les dates ne sont pas stockées sous forme de chaînes dans SQL Server - elles ne sont associées à aucun ** format **, c'est-à-dire, ** SI ** vous utilisez les types de données appropriés ('DATE' ou' DATETIME') –

+2

+1 @marc_s - le formatage n'a rien à voir avec le stockage. – Oded

+0

la colonne est varchar mais j'ai rendez-vous dedans – kinkajou

Répondre

1

Ma recommandation serait:

  1. Ajouter une colonne de type DATE à votre table:

    ALTER TABLE dbo.YourTable ADD NewDateColumn DATE 
    
  2. Mettez à jour votre table pour convertir ces varchar valeurs à DATE:

    UPDATE dbo.YourTable 
    SET NewDateColumn = CAST(YourOldColumn AS DATE) 
    WHERE NewDateColumn IS NULL AND ISDATE(YourOldColumn) = 1 
    
  3. Drop that ancienne colonne:

    ALTER TABLE dbo.YourTable DROP COLUMN YourOldColumn 
    

A partir de maintenant - utiliser la nouvelle colonne DATE exclusivement.

Vous pouvez formater à une représentation de chaîne qui est supported in SQL Server using the CONVERT function

Une fois que vous avez cette DATE colonne, vous pouvez produire dans toute chaîne de mise en forme dont vous avez besoin:

SELECT 
    CONVERT(VARCHAR(20), GETDATE(), 101) 'US format', 
    CONVERT(VARCHAR(20), GETDATE(), 102) 'ANSI format', 
    CONVERT(VARCHAR(20), GETDATE(), 104) 'German format' 

vous donne:

US format ANSI format German format 
12/29/2011 2011.12.29 29.12.2011 
Questions connexes