首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串转换日期和/或时间时,转换失败。筛选sql选择查询时

从字符串转换日期和/或时间时,转换失败。筛选sql选择查询时
EN

Stack Overflow用户
提问于 2018-07-02 06:19:45
回答 2查看 396关注 0票数 2

我有一个相对基本的查询,即将表中的日期保存为nvarchar(200)。

我正在尝试对InteractionDate字段执行如下所示的筛选

代码语言:javascript
运行
复制
'02-03-2018 12:00', '03-04-2018 14:46', '03-04-2018 14:44' etc.

但是,当试图转换nvarchar字段时,请获取错误Conversion failed when converting date and/or time from character string.

这就是查询的样子。

代码语言:javascript
运行
复制
 select
 act.InteractionDate,
 act.Status
 from JobCanvas_B2B canvas
  inner join PersonActivity_JobCanvas inters on inters.CanvasId = 
  canvas.CanvasId
   inner join PersonActivity act on act.PersonActivityId = 
    inters.PersonActivityId 
    inner join Stage s on s.StageId = act.StageId
     where convert(date, act.InteractionDate, 101) > convert(date, '01-01-2018 12:00', 101)

如何正确地进行此日期转换以使查询工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-02 06:44:50

如果您只能容忍处理日期组件,那么请使用掩码103,就像您在回答中所做的那样。如果您还需要时间组件,那么我们可以尝试使用格式掩码120,并在此过程中进行一些字符串操作:

代码语言:javascript
运行
复制
CONVERT(datetime, SUBSTRING(act.InteractionDate, 7, 4) + '-' +
     SUBSTRING(act.InteractionDate, 4, 2) + '-' + LEFT(act.InteractionDate, 2) +
     ' '  + RIGHT(act.InteractionDate, 5), 120)

Demo

理想情况下,我们应该能够直接使用掩码131,但我无法让它工作,至少不能用您所拥有的数据类型。相反,上面的片段手动构建了yyyy-mm-dd hh:mi:ss格式的时间戳。

这里最好的长期解决方案是不要将日期信息存储为文本。如果您必须这样做,那么您的ISO格式就很容易与Server内置的函数进行转换。

票数 1
EN

Stack Overflow用户

发布于 2018-07-02 06:40:08

这招成功了,

代码语言:javascript
运行
复制
  where convert(date, act.InteractionDate, 103) > convert(date, '01-01-2018 12:00', 103)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51130085

复制
相关文章

相似问题

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