Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共5 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助] 这条SQL查询怎么写?

1楼
wcs 发表于:2008/11/15 19:42:00
源表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]
结果不能执行。

有高手知道这条查询如何写吗?

2楼
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]
3楼
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编辑过]
4楼
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。

5楼
wcs 发表于:2008/11/16 17:09:00
问题已经解决,谢谢!

有一个经验总结,已发贴!
共5 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02148 s, 2 queries.