从字符串转换日期和/或时间时,转换失败。 急

周董的黑粉 2016-12-06 09:29:49
  select  CONVERT(datetime,
(CONVERT(varchar(100), DepartureDate,23)+' '+SUBSTRING(DepartureTime,1,2)+
':'+SUBSTRING(DepartureTime,3,2))) as ddd from
tpTicket


DepartureDate的值是2012-10-18 00:00:00.000

DepartureTime的值是0715
想转换为时间格式并与当前时间比较 转换的时候报错了;
消息 241,级别 16,状态 1,第 1 行
从字符串转换日期和/或时间时,转换失败。
...全文
13989 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2016-12-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 u010133266 的回复:]不行,还是报错,一样的错误。 [/Quote]
先定位错误:你逐个试一下,单独的三个内层的函数调用是否出错。
最后请给出拼接好的字符串内容。
卖水果的net 2016-12-06
  • 打赏
  • 举报
回复

-- 用这个,比较简单

with tpTicket as (
select convert(datetime,'2012-10-18 00:00:00.000') dd,'0715' dt
)
select DATEADD(minute, dt/100 * 60 + dt%100, dd) result
from tpTicket 
result
-----------------------
2012-10-18 07:15:00.000

(1 行受影响)


周董的黑粉 2016-12-06
  • 打赏
  • 举报
回复
引用 7 楼 wmxcn2000 的回复:
[quote=引用 6 楼 u010133266 的回复:] [quote=引用 4 楼 wmxcn2000 的回复:] [quote=引用 3 楼 u010133266 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] DepartureDate, DepartureTime 这是两个列,你只给出了一个列;
我是想拼接成一个时间格式字符,然后转换 [/quote] 两列的值,都是什么,把列的类型也都说一下;[/quote] DepartureDate datetime DepartureTime varchar(20)[/quote] DepartureTime 的数据呢?[/quote] DepartureTime的值是0715 时和分中间没有分号;
周董的黑粉 2016-12-06
  • 打赏
  • 举报
回复
引用 8 楼 Tiger_Zhao 的回复:
SELECT CONVERT(datetime,
               (CONVERT(varchar(100),  DepartureDate,23)+' '+
                SUBSTRING(DepartureTime,1,2)+ ':'+
                SUBSTRING(DepartureTime,3,2)
                +':00'       -- 加上秒
               ),
               21            -- 字符串转时间尤其要指定格式
              ) AS ddd
  FROM tpTicket 
不行,还是报错,一样的错误。
Tiger_Zhao 2016-12-06
  • 打赏
  • 举报
回复
SELECT CONVERT(datetime,
(CONVERT(varchar(100), DepartureDate,23)+' '+
SUBSTRING(DepartureTime,1,2)+ ':'+
SUBSTRING(DepartureTime,3,2)
+':00' -- 加上秒
),
21 -- 字符串转时间尤其要指定格式
) AS ddd
FROM tpTicket
卖水果的net 2016-12-06
  • 打赏
  • 举报
回复
引用 6 楼 u010133266 的回复:
[quote=引用 4 楼 wmxcn2000 的回复:] [quote=引用 3 楼 u010133266 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] DepartureDate, DepartureTime 这是两个列,你只给出了一个列;
我是想拼接成一个时间格式字符,然后转换 [/quote] 两列的值,都是什么,把列的类型也都说一下;[/quote] DepartureDate datetime DepartureTime varchar(20)[/quote] DepartureTime 的数据呢?
周董的黑粉 2016-12-06
  • 打赏
  • 举报
回复
引用 4 楼 wmxcn2000 的回复:
[quote=引用 3 楼 u010133266 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] DepartureDate, DepartureTime 这是两个列,你只给出了一个列;
我是想拼接成一个时间格式字符,然后转换 [/quote] 两列的值,都是什么,把列的类型也都说一下;[/quote] DepartureDate datetime DepartureTime varchar(20)
Ekun_sky 2016-12-06
  • 打赏
  • 举报
回复
select convert(datetime,convert(varchar(10),departuredate,23)+' '+substring(departuretime,1,2)+':'+substring(departuretime,3,2)) from tpTicket
卖水果的net 2016-12-06
  • 打赏
  • 举报
回复
引用 3 楼 u010133266 的回复:
[quote=引用 2 楼 wmxcn2000 的回复:] DepartureDate, DepartureTime 这是两个列,你只给出了一个列;
我是想拼接成一个时间格式字符,然后转换 [/quote] 两列的值,都是什么,把列的类型也都说一下;
周董的黑粉 2016-12-06
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
DepartureDate, DepartureTime 这是两个列,你只给出了一个列;
我是想拼接成一个时间格式字符,然后转换
卖水果的net 2016-12-06
  • 打赏
  • 举报
回复
DepartureDate, DepartureTime 这是两个列,你只给出了一个列;
周董的黑粉 2016-12-06
  • 打赏
  • 举报
回复

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧