首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较SQL中的smalldatetime?

如何比较SQL中的smalldatetime?
EN

Stack Overflow用户
提问于 2020-04-07 01:45:05
回答 1查看 89关注 0票数 0

我尝试只选择在过去12小时内发生的行。下面的查询在没有Where子句的情况下工作得很好,我得到的正是我想要的"Called_At“列。但是,当我添加where子句时,它会给出错误"Conversion failed when converting character string to smalldatetime data type."

查询为

代码语言:javascript
复制
SELECT TOP (2000) 
      CONVERT(smalldatetime, CONCAT([Call_Date],' ',[Call_Time])) As 'Called_At'
      ,[Other_Column1]
      ,[Other_Column2]
      ,[etc]

  FROM [Database].[dbo].[Table]
  WHERE CONVERT(smalldatetime, CONCAT([Call_Date],' ',[Call_Time])) >= DATEADD(hour,-12,GetDATE())
  ORDER BY [Call_Date] DESC, [Call_Time] DESC

以下是不带Where部分的语句的列示例。

代码语言:javascript
复制
Called_At             Column1       Column2
-------------------   -------       ---------
2020-04-05 23:09:00   Data          MoreData    
2020-04-05 20:50:00   Data          MoreData
2020-04-05 17:08:00   Data          MoreData
2020-04-05 16:49:00   Data          MoreData

为什么第一个CONVERT()语句可以正常工作,而第二个却不行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 01:47:57

这是因为操作的顺序。我建议您使用以下命令来查找攻击性价值:

代码语言:javascript
复制
SELECT CONCAT([Call_Date], ' ', [Call_Time]))
FROM [Database].[dbo].[Table]
WHERE TRY_CONVERT(smalldatetime, CONCAT([Call_Date], ' ', [Call_Time])) IS NULL

一旦你看到了数据的样子,你就可以知道如何修复它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61065759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档