以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 视图里增加列 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51171) |
-- 作者:fubblyc -- 发布时间:2014/5/21 10:57:00 -- 视图里增加列 各位老师好,我想在视图里增加列【出生日期】,数据类型 为 日期 ,取值为 出生月 & "-" & 出生日 。 或者 出生年 & “-” 出生月 & "-" & 出生日 也行
有的数据不全。。。 不知道该咋做呢。。。 [此贴子已经被作者于2014-5-21 11:13:25编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/5/21 11:05:00 -- 直接写
Cast(vcsm.fintBirthdayYear As varchar) + \'-\' + Cast(vcsm.fintBirthdayMonth as varchar) as 出生日期 |
-- 作者:fubblyc -- 发布时间:2014/5/21 11:13:00 -- 有点甜老师,没有实现。。。 |
-- 作者:fubblyc -- 发布时间:2014/5/21 11:18:00 -- 啊,知道了。我犯的低级错误。没有逗号。谢谢有点甜老师!! |
-- 作者:fubblyc -- 发布时间:2014/5/21 11:35:00 -- 有点甜老师, 现在遇到3个问题: 1、那增加的这个列,能指定数据类型为 日期 类型 的吗? 2、出生年 有的没有数据,不知道该怎么处理。能不能写成,要是 出生年 为空,则写成 1900 这样大家都知道是不真实的数字。 3、如果 出生月 出生日 两者任何一个的数据为空,则 出生日期 就显示为空。
视图这方面才刚开始接触。。不知道可以从哪里学到这方面的知识。。。
|
-- 作者:有点甜 -- 发布时间:2014/5/21 12:09:00 -- 测试了一下,可以。自己改。
select case when 月 is null or 日 is null then null else cast(cast(isnull(年,1900) as varchar) + \'-\' + cast(月 as varchar) + \'-\' + cast(日 as varchar) as datetime) end as 出生年月 from {test} |
-- 作者:fubblyc -- 发布时间:2014/5/21 12:37:00 -- 谢谢甜老师,
select case when 月 is null or 日 is null then null else cast(cast(isnull(年,1900) as varchar) + \'-\' + cast(月 as varchar) + \'-\' + cast(日 as varchar) as datetime) end as 出生年月 from {test}
出现这样的错误: [Err] 22007 - [SQL Server]从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
我把 datetime 改成 varchar 试一下是可以显示出来,但这不是我们想要的日期格式。
我改成 date , 出现如下错误: |
-- 作者:有点甜 -- 发布时间:2014/5/21 12:44:00 -- sqlserver 没有date类型的,要用datetime。
再者,你的数据肯定有不合规范的数据,比如 月是23,日是40,这种数据。单独用少一点的数据测试吧。 |
-- 作者:fubblyc -- 发布时间:2014/5/21 13:09:00 -- 哦哦。对的。是有不规范的。甜老师的语句有效。
那现在问题是 原来的这个ERP,他软件做的不规范,录入窗口没有做数据限制,导致了这种不规范的数据存在。
那我们现在能不能排除掉这些不规范的数据吗?
比如 出生月 不是 1~12 的,不显示 出生日 不是规范的就不显示,如: 1、 2月,平年28天,闰年29天。(用年份除以4,能除尽的29天,反之28天) 2、 大月 1~31 (1月、3月、5、7、8、10、11月) 小月1~30 (4月、6月、9月、12月)
哇,这个工程量应该好大啊。。。
这是原来的视图:(select 和 from {}在前后,就没有复制了)
vcsm.fintBirthdayYear AS 出生年,
|
-- 作者:有点甜 -- 发布时间:2014/5/21 14:26:00 -- 请不要把这个操作放在视图里执行。
你把所有数据加载到狐表里,用代码遍历所有的行,检测,并修改,把数据弄规范再说。 [此贴子已经被作者于2014-5-21 15:05:36编辑过]
|