以文本方式查看主题
- 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=1143)
|
-- 作者:wcs
-- 发布时间:2008/11/15 19:42:00
-- [求助] 这条SQL查询怎么写?
源表A:(外部sql数据库中) a b c 2008 10 4 2008 4 24
我想得到的表B: a b c d 2008 10 4 2008-10-4 2008 4 24 2008-4-24
其中:a、 b、 c为整数列,我希望查询出来的d 为日期列
我写了这样的一个查询: select a,b,c,concat(a,"-",b,"-",c) as d form[表A] 结果不能执行。
有高手知道这条查询如何写吗?
|
-- 作者:eric803
-- 发布时间:2008/11/15 20:11:00
--
select a,b,c,cast(a as char(4))+\'-\'+cast(b as varchar(2))+\'-\'+cast(c as varchar(2)) as d from [表A]
|
-- 作者:wcs
-- 发布时间:2008/11/15 20:41:00
--
谢谢,我测试了一下,是可以执行的。
能解释一下char() 和 varchar() 的意思吗?
同时,我在这条查询语句中加了一个where,就不能执行了,
select a,b,c,cast(a as char(4))+\'-\'+cast(b as varchar(2))+\'-\'+cast(c as varchar(2)) as d from [表A] where d = \'2008-10-4\'
程序提示d 列不存在。
我的数据源中的年、月、日是分别放在不同的列中的,如上例。 我在查询时希望把它们整到一起,同时按日期来筛选查询结果。 为解决这个问题,还有别的适合的查询语句吗?
[此贴子已经被作者于2008-11-15 20:44:39编辑过]
|
-- 作者:yuanbin
-- 发布时间:2008/11/16 11:54:00
--
在以上基础上有2种写法: 1、select a.* from (select a,b,c,cast(cast(a as char(4))+\'-\'+cast(b as char(2))+\'-\'+cast(c as char(2)) as datetime) as d from 表A) as a where d=\'2008-10-4\'
2、select a,b,c,cast(cast(a as char(4))+\'-\'+cast(b as char(2))+\'-\'+cast(c as char(2)) as datetime) as d from 表A where cast(cast(a as char(4))+\'-\'+cast(b as varchar(2))+\'-\'+cast(c as varchar(2)) as datetime)=\'2008-10-4\'
char 和 varchar 字符数据类型说明:固定长度用char,可变长度用varchar。
|
-- 作者:wcs
-- 发布时间:2008/11/16 17:09:00
--
问题已经解决,谢谢!
有一个经验总结,已发贴!
|