sqlserver时间格式的处理

image.png

SELECT *,'2022年'+SUBSTRING([计划检修时间], 0, CHARINDEX('-', [计划检修时间])) as 检修开始,'2022年' + SUBSTRING([计划检修时间], CHARINDEX('-', [计划检修时间])+1, LEN([计划检修时间]) - CHARINDEX('-', [计划检修时间])+1) as 检修结束, CONVERT(VARCHAR,'2022年'+SUBSTRING([计划检修时间], 0, CHARINDEX('-', [计划检修时间])),120) FROM [dbo].[2022检修基础表]

image.png

我使用convert应该没有生效

几次元空间 发布于 2022-4-2 16:49
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
CD20160914Lv8专家互助
发布于2022-4-2 17:16

SELECT 

t.计划检修时间,

'2022年'+SUBSTRING([计划检修时间], 0, CHARINDEX('-', [计划检修时间])) as 检修开始,

'2022年' + SUBSTRING([计划检修时间], CHARINDEX('-', [计划检修时间])+1, LEN([计划检修时间]) - CHARINDEX('-', [计划检修时间])+1) as 检修结束, 

CONVERT(VARCHAR,replace(replace('2022-'+SUBSTRING([计划检修时间], 0, CHARINDEX('-', [计划检修时间])),'月','-'),'日',''),120) as 时间1,

replace(replace('2022-'+SUBSTRING([计划检修时间], 0, CHARINDEX('-', [计划检修时间])),'月','-'),'日','') as 时间2

FROM (select '7月1日-7月17日' as 计划检修时间 ) t

image.png

最佳回答
0
赤贫青年Lv4见习互助
发布于2022-4-2 17:00

图二不是已经成功拆分了嘛,你想实现什么效果?

  • 几次元空间 几次元空间(提问者) 我想实现将它改为日期格式,现在应该还是文本吧
    2022-04-02 17:01 
  • 赤贫青年 赤贫青年 回复 几次元空间(提问者) 在外面套一层类型转换呗:cast (字段 as date)
    2022-04-02 17:08 
  • 几次元空间 几次元空间(提问者) 回复 赤贫青年 这样试过了,直接报错了
    2022-04-02 17:12 
  • 几次元空间 几次元空间(提问者) SELECT *,\'2022年\'+SUBSTRING([计划检修时间], 0, CHARINDEX(\'-\', [计划检修时间])) as 检修开始,\'2022年\' + SUBSTRING([计划检修时间], CHARINDEX(\'-\', [计划检修时间])+1, LEN([计划检修时间]) - CHARINDEX(\'-\', [计划检修时间])+1) as 检修结束, cast(\'2022年\'+SUBSTRING([计划检修时间], 0, CHARINDEX(\'-\', [计划检修时间])) as date) FROM [dbo].[2022检修基础表] > Msg 241, Level 16, State 1, Server WIN-38H4D6SMCAD, Procedure , Line 0 从字符串转换日期和/或时间时,转换失败。 > [22007] [Microsoft][SQL Server Native Client 10.0][SQL Server]从字符串转换日期和/或时间时,转换失败。 (241)
    2022-04-02 17:15 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-4-2 17:16

with a as (

select '2022年5月2号' [S]

union ALL

select '2022年5月21号'

)

SELECT CONVERT(DATE,REPLACE(REPLACE(REPLACE(S,'年','-'),'月','-'),'号',''),120) FROM A

image.png

最佳回答
0
yzm339714Lv6中级互助
发布于2022-4-2 17:16

试试 这个  convert(datetime,时间,20)      不行的话, 就先 replace 函数把年 月 替换为-   日去掉,然后再用convert(datetime,时间,20) 

  • 3关注人数
  • 484浏览人数
  • 最后回答于:2022-4-2 17:16
    请选择关闭问题的原因
    确定 取消
    返回顶部