以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  希望使用SQL语句支持的函数实现......  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103643)

--  作者:czy66ds
--  发布时间:2017/7/13 11:50:00
--  希望使用SQL语句支持的函数实现......
希望使用SQL语句支持的函数实现:
例如:有类似 CK2017-0711-1137-22 的字符串,格式相同

1、取出子字符串 2017-0711
2、将2017-0711变成 2017-07-11
3、将字符串 2017-07-11 转换成日期格式

因为要在SQL语句中使用,故需一气呵成

--  作者:jspta
--  发布时间:2017/7/13 12:05:00
--  
DECLARE @s nvarchar(32)
SET @s =\'CK2017-0711-1137-22\'
S ELECT CONVERT(DATETIME, REPLACE(SUBSTRING(@s,3,9),\'-\',\'\'),120)

--  作者:有点甜
--  发布时间:2017/7/13 12:27:00
--  

 把sqlserver的函数看一下

 

http://www.foxtable.com/webhelp/scr/1827.htm

 

http://www.w3school.com.cn/sql/

 


--  作者:czy66ds
--  发布时间:2017/7/13 13:24:00
--  
我是看过狐表帮助sql函数后才发帖提问的。
我的理想是用一行达到目的,比方这样:
CDate(Insert(SubString(\'CK2017-0711-1137-22\',3,9),7,"-"))
当然这样写可能不行。
在狐表sql函数只找到SubString,类似Insert,CDate的没找到。
所以来提问。


--  作者:czy66ds
--  发布时间:2017/7/13 14:19:00
--  
我把问题提得明确点吧
假如有个表:表名为 AA
  日期  编号  
      ck2017-0710-1320-23
      ck2017-0711-1137-22
      ck2017-0712-0909-02
      ck2017-0713-0814-45
我想把每行编号列,例如从第一行编号中取出“2017-0710”并转换成日期2017-07-10,赋值给日期列。
想采用UPDATE语句实现:UP DATE {AA} S ET 日期 = 函数?(编号)



--  作者:有点甜
--  发布时间:2017/7/13 14:28:00
--  

2楼的代码就是

 

CONVERT(DATETIME, REPLACE(SUBSTRING(\'CK2017-0711-1137-22\',3,9),\'-\',\'\'))