如何整体修改SQL条目?

时间:2015-04-01 23:15:54

标签: sql sql-server date

我有1500万条记录,日期条目格式不正确。它们看起来像这样:“Thu Jun 09 08:00:01 UTC 2011”(例如)。这是在Microsoft SQL服务器上。

在excel中,我分解了(部分)这样的数据:

“Wed Jul 27 06:14:58 UTC 2011”
- >单独的单元格= Wed |七月| 27 | 06:14:58 | 2011 |

这是一种粗略但可行的方法,可以在一个小样本中切割数据。现在我需要在SQL数据库中做一些类似的事情。

我是SQL的新用户,但我需要一种方法将其转换为可用数据。将日期数据更改为组织良好的格式的最佳方法是什么?谢谢!

EDIT1:数据保存为字符串。我继承了数据库,并试图学习所有我能使它有用(因此目前正在学习SQL,新手等)。理想的情况是将数据转换为单个格式正确的日期/时间,但更粗略的解决方案也适用于我的目的。真的是任何能够从字符串格式获取数据并将其转换为我可以按日期排序的形式的任何内容。

EDIT2:我会使用excel中的数据(我能够将其转换为格式正确的日期),但是有太多的条目可以将它们全部拉进去。原始数据是在SQL中,这就是为什么我'我试图解决这个问题(可能非常简单)。

EDIT3:感谢您的建议和帮助。我对此非常陌生。

1 个答案:

答案 0 :(得分:1)

从Excel表格中的数据中将数据导入到单独列中的sql server中,最终会得到类似的内容......

DECLARE @Table TABLE ([Day] VarChar(5),[Month] VarChar(3)
                                  , [Date] INT, [Time] VarChar(9), [Year] INT)
INSERT INTO @Table VALUES 
('Wed' ,'Jul' ,27 ,'06:14:58' ,2011 )

然后,您将获得以下查询以获取正确的DateTime格式并将其转换为日期时间值,并将表更新为具有datetime数据类型的列。

SELECT *, 
      CAST(
      CAST([Year] AS VARCHAR(4))
      + CASE [Month]   WHEN 'Jan' THEN '01'
                       WHEN 'Feb' THEN '02'
                       WHEN 'Mar' THEN '03'
                       WHEN 'Apr' THEN '04'
                       WHEN 'May' THEN '05'
                       WHEN 'Jun' THEN '06'
                       WHEN 'Jul' THEN '07'
                       WHEN 'Aug' THEN '08'
                       WHEN 'Sep' THEN '09'
                       WHEN 'Oct' THEN '10'
                       WHEN 'Nov' THEN '11'
                       WHEN 'Dec' THEN '12'
      END 
     + CAST([Date] AS VARCHAR(2)) 
     + ' '
     + [Time]   AS DATETIME) AS DateAsDateTime      

FROM @Table

结果

╔═════╦═══════╦══════╦══════════╦══════╦═════════════════════════╗
║ Day ║ Month ║ Date ║   Time   ║ Year ║     DateAsDateTime      ║
╠═════╬═══════╬══════╬══════════╬══════╬═════════════════════════╣
║ Wed ║ Jul   ║   27 ║ 06:14:58 ║ 2011 ║ 2011-07-27 06:14:58.000 ║
╚═════╩═══════╩══════╩══════════╩══════╩═════════════════════════╝