以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]日期转换问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159892)

--  作者:wssylxb
--  发布时间:2021/1/12 18:46:00
--  [求助]日期转换问题
 窗口中的表是如下语句从SQL server 2008的表中得到的数据,其中日期列属性是nvarchar(50),Tables("窗口1_Table1").Fill("S elect * From {" & tb1 & "}","ddi",True) ,现在日期显示如下格式“20200101”,想显示成“2020-01-01”的日期格式,应该怎么写语句?谢谢!
--  作者:有点蓝
--  发布时间:2021/1/12 20:22:00
--  
试试
Tables("窗口1_Table1").Fill("Select *,(case when 日期 is not null and len(日期) = 8 then Left(日期,4)+\'-\'+SubString(日期, 5, 2)+\'-\'+Right(日期,2)  else 日期 end) as 日期2 From {" & tb1 & "}","ddi",True)
--  作者:wssylxb
--  发布时间:2021/1/12 20:36:00
--  
还是显示“20200101“这样的格式
--  作者:有点蓝
--  发布时间:2021/1/12 20:47:00
--  
Tables("窗口1_Table1").Fill("Select *,cast((case when 日期 is not null and len(日期) = 8 then Left(日期,4)+\'-\'+SubString(日期, 5, 2)+\'-\'+Right(日期,2)  else 日期 end) as datetime) as 日期2 From {" & tb1 & "}","ddi",True)
--  作者:wssylxb
--  发布时间:2021/1/12 21:24:00
--  
谢谢版主,可以了。之前您写的语句应该也可以,我是把 ”as 日期2” 写成”as 日期” 了,造成错误。
现在问题是:sql server2000 数据库DDI中的的多个数据来源表中,日期是20200101这样的格式是可以了。原来就是2020-01-01格式的就不能正常显示了。这个如何过滤一下,凡是格式是20200101这样的就执行您这个语句,否则执行原来的语句?谢谢您!

--  作者:有点蓝
--  发布时间:2021/1/12 21:29:00
--  
截图说明一下
--  作者:wssylxb
--  发布时间:2021/1/12 21:36:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:错误.jpg
图片点击可在新窗口打开查看

--  作者:wssylxb
--  发布时间:2021/1/12 21:38:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:错误2.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/1/12 21:58:00
--  
截图具体表格数据说明
[此贴子已经被作者于2021/1/12 21:57:38编辑过]

--  作者:wssylxb
--  发布时间:2021/1/13 11:29:00
--  
老师:这个是报错的sqlserver中原始表的结构及数据。可以正常执行您的语句的表中的日期列是varcher(100),在sqlserver中显示“20200101”字样的