来自SQL Server的DateTime字段在Excel中显示不正确

在白天无数次我正在复制和粘贴从SQL Server Management Studio到Excel的logging。

我的问题是,如8/23/2013 4:51:02 PM DateTime值不能正确显示,如下图所示,即使它显示在function框中正确。

在这里输入图像说明

将数据types更改为ShortDate修复显示问题,但是由于我有大量的date字段进行格式化,因此很繁琐。 由于Excel和SQL Server都是微软产品,人们会期望Excel能够正确显示date字段。

编辑:所以这似乎是Excel的显示问题。 我将我的Management Studio结果复制到记事本,然后从那里复制到Excel,我仍然遇到同样的问题。 将记事本2013-08-23 16:52:11.493复制到Excel将显示52:11.5 (显示分钟,秒和四舍五入毫秒)。 Excel版本是2010年。

任何想法来简化这个?

我也有这个问题的问题只是复制和粘贴DATETIME字段从SQLpipe理Studio到Excel进行操作。 Excel具有正确的DATETIME值(即使在粘贴之后应用了格式),但默认情况下不具有用于显示SQL DATETIME的内置格式。 这是修复:

右键单击单元格,然后select“格式单元格”。 select自定义。 在types:input字段中input

 yyyy-mm-dd hh:mm:ss.000 

参考: http : //office.microsoft.com/en-us/excel-help/create-a-custom-number-format-HP010342372.aspx

我和安德烈有同样的问题。 似乎没有直接的解决scheme,但只要您可以在SMALLDATETIME的限制范围内生存,则生成数据的查询中的CAST就可以修复问题。 在下面的查询中,第一列不能在Excel中正确格式,第二列。

selectGETDATE(),CAST(GETDATE()作为SMALLDATETIME)

也许DATETIME和DATETIME2秒的小数部分混淆了Excel。

虽然不是您的问题的完整答案,Excel中有快捷键可将所选单元格的格式更改为date或时间(不幸的是,我还没有findDate + Time的格式)。

所以,如果你只是在寻找date,你可以执行以下操作:

  1. 从SQL Server Management Studio复制范围
  2. 粘贴到Excel中
  3. select您需要格式化为date的单元格的范围
  4. 按下Ctrl + Shift + 3

要格式化为Times,请使用Ctrl + Shift + 2

你可以在SQL SERVER中使用这个

SELECT CONVERT(nvarchar(19),ColumnName,121)AS [已更改] FROM表

这里有一个黑客可能是有帮助的…它把撇号放在时间值的前面,所以当你右击SSMS中的输出并且说“Copy with Headers”,然后粘贴到Excel中时,它保留了毫秒/纳秒datetime2值。 把撇号放在那里有点难看,但比处理Excel对时间值做不必要的四舍五入更好。 date是英国格式,但您可以查看MSDN中的CONVERTfunction页面。

SELECT CONVERT(VARCHAR(23),sm.MilestoneDate,103)AS MilestoneDate,''''+ CONVERT(VARCHAR(23),sm.MilestoneDate,114)AS MilestoneTime FROM SomeTable sm

find一个解决scheme,不需要记住和重新input自定义date时间格式yyyy-mm-dd hh:mm:ss.000

  • 在一个新的单元格上,写入=NOW()或任何有效的date+时间,如2017年5月30日5/30/2017 17:35 :它将正确显示在您的语言,例如5/30/2017 5:35:00 PM
  • select单元格,单击格式画家图标(画笔)
  • 现在点击要应用格式的列的行标题。

这将复制适当的date时间格式到整个列,使其正确显示。

我有一段时间有这个相同的问题,因为我从SQL Server生成相当数量的临时报告,并复制/粘贴到Excel中。 我也欢迎一个适当的解决scheme,但我的临时解决方法是在Excel中创build一个默认的macros,将突出显示的单元格转换为Excel的date时间格式,并将其分配给一个热键(Shift-Ctrl-D在我的情况下)。 所以我打开Excel,从SSMS复制/粘贴到一个新的Excel工作表中,突出显示要转换的列并按下Shift-Ctrl-D。 任务完成。

请尝试以下操作:将“2004-06-01 00:00:00.000”粘贴到Excel中。

现在尝试将“2004-06-01 00:00:00”粘贴到Excel中。

Excel粘贴时似乎不能处理毫秒…