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
是否有其他/更好的方式来达到预期的效果?
答
我认为它与“连接超时”在连接字符串的配置有关。尝试将连接超时参数值设置为大于当前值。 (尝试将该值设为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
这将是更快,但它会需要更多的存储,并复制数据,但如果检索的速度是最重要的因素,这是一个不错的选择。
请提供查询中使用的表格字段的数据类型。 – STLDeveloper
你在哪里执行查询?你的连接字符串是什么? (请不要输入密码)最近有什么变化? –
尝试使用“top 10”运行查询?那个时间呢? –