SQL转换日期时间

问题描述:

将DateTime转换为其他格式的现有SQL语句已运行很长一段时间,但现在在查询执行后仅几秒钟就会给出“查询超时已过期”错误。SQL转换日期时间

SQL = "SELECT top 1000000 CONVERT(VARCHAR(10),TimeStamp,101) + ' ' + 
     CONVERT(CHAR(8),(CONVERT(DATETIME,TimeStamp,113)),114), 
     LogicName, PointValue FROM Trends order by LogicName" 

原始日期时间是这样的:3/21/2017 6:53:00 PM

期望甲酸是:03/21/2017 18:53:00

是否有其他/更好的方式来达到预期的效果?

+1

请提供查询中使用的表格字段的数据类型。 – STLDeveloper

+0

你在哪里执行查询?你的连接字符串是什么? (请不要输入密码)最近有什么变化? –

+0

尝试使用“top 10”运行查询?那个时间呢? –

我认为它与“连接超时”在连接字符串的配置有关。尝试将连接超时参数值设置为大于当前值。 (尝试将该值设为60并检查)。 您的查询 -

SELECT TOP 1000000 CONVERT(VARCHAR(10), GETDATE(), 101) + ' ' + 
CONVERT(VARCHAR(8), GETDATE(), 114) AS [Date & Time] 
    ,LogicName 
    ,PointValue 
FROM Trends 
ORDER BY LogicName 

百万日期时间到varchar转换将需要一段时间。首先,考虑客户端应用程序是否可以根据需要处理格式,而不是格式化查询中的所有百万条记录。

如果查询必须在指定的格式提供时间戳值,那么,对于性能,您可能希望只计算列添加到该格式存储的时间戳值,像这样的表:

ALTER TABLE Trends 
ADD TimeStampFormatted AS FORMAT(TimeStamp, 'MM/dd/yyyy HH:mm:ss') 

然后用这个查询:

SELECT top 1000000 TimeStampFormatted, LogicName, PointValue 
FROM Trends order by LogicName 

这将是更快,但它会需要更多的存储,并复制数据,但如果检索的速度是最重要的因素,这是一个不错的选择。