sql问题

 现在表中 某日期字段 数据内容如下:

01 22 2021   5:18PM

现在想将存储内容改为下面的样子,只能用update语句一条条改吗,有对字段类型的语句吗

2021-01-22 17:26:28

chenxf3 发布于 2021-2-24 14:04 (编辑于 2021-2-24 14:05)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
烟尘Lv6高级互助
发布于2021-2-24 14:19(编辑于 2021-2-24 14:21)

如果数据库字段是文本类型的且非常标准

sqlserver语法:

update set 日期=concat(substring(日期,7,4),'-',substring(日期,1,2),'-',substring(日期,4,2),' ',case when right(日期,2)='PM' then convert(int,substring(日期,13,2))+12 else substring(日期,13,2) end,substring(日期,15,3),":00")

小时位置可能位数会有偏差,建议先select一下结果,检查没问题了然后在update

  • chenxf3 chenxf3(提问者) 这个日期是表存储日期的字段名吧,不是具体值吧
    2021-02-24 14:27 
  • 烟尘 烟尘 回复 chenxf3(提问者) 字段名
    2021-02-24 14:28 
  • chenxf3 chenxf3(提问者) 回复 烟尘 提示concat不是可识别的内置函数名称
    2021-02-24 14:29 
  • chenxf3 chenxf3(提问者) 回复 烟尘 update set date =concat(substring(date,7,4),\'-\',substring(date,1,2),\'-\',substring(date,4,2),\' \',case when right(date,2)=\'PM\' then convert(int,substring(date,13,2))+12 else substring(date,13,2) end,substring(date,15,3),\":00\") from testcxf 还有列名date无效,这里是我那个细节错了吗
    2021-02-24 14:31 
  • chenxf3 chenxf3(提问者) 回复 烟尘 查了下,concat是2012版本的,我的数据库是2008的
    2021-02-24 14:41 
最佳回答
0
访客登录Lv6初级互助
发布于2021-2-24 14:10(编辑于 2021-2-24 14:34)

sqlserver 日期转格式试一下用convert()函数   convert(varchar(20),字段名,120)

https://www.w3school.com.cn/sql/func_convert.asp

  • 访客登录 访客登录 回复 chenxf3(提问者) 你可以先用select语句看看,能不能转换成功,SELECTE DATE_FORMAT(日期,\'yyyy-MM-dd hh:mm:ss\') FROM TABLE 不过你要是改数据库里的数据,应该可以直接改一下这个字段的属性吧
    2021-02-24 14:18 
  • chenxf3 chenxf3(提问者) 回复 访客登录 我的是sqlserver数据库,貌似没有 DATE_FORMAT这个函数 SELECT DATE_FORMAT(date,\\\'yyyy-MM-dd hh:mm:ss\\\') from testcxf 这样写会报错: DATE_FORMAT是不可识别的内置函数名称
    2021-02-24 14:24 
  • 访客登录 访客登录 回复 chenxf3(提问者) 更新了一下答案
    2021-02-24 14:32 
最佳回答
0
krystal033Lv7高级互助
发布于2021-2-24 14:10
直接这个表导出来再excel上改好在导进去吧

最佳回答
0
zhengliliLv5见习互助
发布于2021-3-4 09:35

先to_date,再to_char

  • 5关注人数
  • 784浏览人数
  • 最后回答于:2021-3-4 09:35
    请选择关闭问题的原因
    确定 取消
    返回顶部