2011-12-29 111 views
0

我有日期在数据库的列,但日期格式不相同。有的是mm-dd-yyyy,有的是mm.dd.yy或其他。如何使用查询将其格式化为相同类型?更新日期列和格式日期到相同模式

我使用SQL Server 2008的

+4

什么** datatype **是该列?日期不在SQL Server中存储为字符串 - 因此它们没有与它们关联的任何**格式** - 也就是说,如果使用适当的数据类型(DATE或DATETIME),则为IF IF – 2011-12-29 08:13:41

+2

+1 @marc_s - 格式与存储无关。 – Oded 2011-12-29 08:17:27

+0

列是varchar,但我有它的日期 – kinkajou 2011-12-29 08:54:50

回答

1

我的建议是:

  1. 添加DATE类型的列到表:

    ALTER TABLE dbo.YourTable ADD NewDateColumn DATE 
    
  2. 更新你的表转换那些varchar值到DATE

    UPDATE dbo.YourTable 
    SET NewDateColumn = CAST(YourOldColumn AS DATE) 
    WHERE NewDateColumn IS NULL AND ISDATE(YourOldColumn) = 1 
    
  3. 丢弃旧列:

    ALTER TABLE dbo.YourTable DROP COLUMN YourOldColumn 
    

从现在开始 - 使用新的DATE列专。

你可以把它格式化为任何字符串表示是supported in SQL Server using the CONVERT function

一旦你的DATE列,可以输出它的任何字符串格式化你需要:

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

为您提供:

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