表结构是这样的
col1 col2 col3 col4 col5 col6……
DayTime 00:00 00:10 00:20 00:30 00:40 DayTime的格式为yyyy-MM-dd即只有年月日,我想查询的时候,取DayTime的值,然后再加上后边的列名00:00等作为时间,即时间格式为yyyy-MM-dd HH:mm 这个sql语句该怎么写啊。要崩溃了
col1 col2 col3 col4 col5 col6……
DayTime 00:00 00:10 00:20 00:30 00:40 DayTime的格式为yyyy-MM-dd即只有年月日,我想查询的时候,取DayTime的值,然后再加上后边的列名00:00等作为时间,即时间格式为yyyy-MM-dd HH:mm 这个sql语句该怎么写啊。要崩溃了
即时间格式为yyyy-MM-dd HH:mm 这个sql语句该怎么写啊。
-----------------------------
//PL/SQL里写了个相似的LZ看看
SQL> select to_char(t.opendate,'yyyy-mm-dd hh24:mi') from tbl_store t;TO_CHAR(T.OPENDATE,'YYYY-MM-DD
------------------------------
2009-03-28 18:58
2009-03-29 19:03
然后列名为00:00等等
比如说列23:10的内容为2000-10-04 23:10的数据
要取表的列名比较麻烦,只用一条SQL的话我认为是办不到,除非你事先已经知道列名了。我不知道你用的是什么数据库,取指定表中所有列名的sql
Oracle: select * from all_tab_columns where table_name = 'xxx'
SqlServer:select sys.syscolumns.name from sys.syscolumns ,sys.tables where sys.syscolumns.id = sys.tables.object_id and sys.tables.name = 'xxx' 只能先把所有列名取出来然后再拼字符串了,给你个SqlServer的例子吧,但是这个只是你的表中只有一条数据的情况,不只一条的话就得用到游标了。
declare @day_time as String
select @day_time = DayTime from xxx
select @day_time + sys.syscolumns.name from sys.syscolumns ,sys.tables where sys.syscolumns.id = sys.tables.object_id and sys.tables.name = 'xxx' and sys.syscolumns.name <> 'DayTime'
这列里面存的内容是日期。-->DayTime列里面村的是日期
2009/04/09 null null null null null而你想得到的结果是2009/04/09 00:00 2009/04/09 00:10 2009/04/09 00:20 2009/04/09 00:30 2009/04/09 00:40如果是这样的话,那么取列名是非常麻烦的一件事。列名一般都存在系统表里面,也就是说不大可能通过一条SQL语句来实现你想要的结果。
而我给你的例子中用到了存储过程,主要是定义变量。
declare @day_time as String '在SQL中定义一个字符串变量
select @day_time = DayTime from xxx '给变量赋值,取得是DayTime里面的值
select @day_time + sys.syscolumns.name from sys.syscolumns ,sys.tables where sys.syscolumns.id = sys.tables.object_id and sys.tables.name = 'xxx' and sys.syscolumns.name <> 'DayTime'
最后一个select就是取表的列名(因为我不知道你的表名是什么,所以用了xxx来表示),红色的部分就是就是在表名前面加上日期的值。这个SQL有一个限制就是你的表里面只能有一条数据,如果是一条以上的话检索出来的就不是一个值而是一列值了,一列值是没有办法赋给一个变量的。而SQL中又没有数组,这样的话你只能用游标了。如果是多条数据的话最好用临时表,就是你自己建一个表把需要的数据一条一条的插进去最后在检索这个表,返回结果集后再把这个表删掉。
还有这个例子是SqlServer的,Oracle的语法只能你自己去查了,我这没有Oracle,我只能给你提供思路。
String sql= "select DateTime,DayTime,"+getcolumn().get(h)+" from (select cast(convert(nvarchar(10), DayTime, 120) + ' '+'"+getcolumTime().get(h)+"' as datetime) as DateTime,DayTime,"+getcolumn().get(h)+" from "+table+") DERIVEDTBL where (DayTime = (select max(DayTime) from "+table+" where ("+getcolumn().get(0)+" is not null)) and InstrumentID="+InstruCount.get(c)+")";