在数据库中,年和月是同一张表中的不同字段,但我要查询2013年3月到2014年6月之间的数据,sql语句怎么写

在数据库中,年和月是同一张表中的不同字段,但我要查询2013年3月到2014年6月之间的数据,sql语句怎么写,第1张

最简单的办法,找这张表所对应的时间字段

我不相信在建表的时候就没有一个字段专门用来记时间

如果是在没有的话,也简单。

那你的年和月字段肯定是 字符或者数字型的,可以直接用下面的sql。

select from 表 where (年 100 + 月) > 201303 And (年 100 + 月)< 201406

这样:

select 年份=convert(varchar(4),year(max(time1)))+'年',

一月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=1),

二月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=2),

三月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=3),

四月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=4),

五月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=5),

六月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=6),

七月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=7),

八月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=8),

九月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=9),

十月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=10),

十一月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=11),

十二月=(select sum(数据) from tablename a where year(atime1)=year(tablenametime1) and month(atime1)=12)

FROM tablename

group by year(time1)

以上语句测式通过。可以直接复制使用,如果具体表名,字段名称不同,直接替换表名和列名即可。(表名:TABLENAME,数据字段:数据,时间字段:TIME1)

注意,输入第一个月后,后面的月份复制就行了,然后改一下月份数即可。

之所以使用SUM统计函数,是为了防止一个年月的数据出现多次,如果出现一次,就可以不用这个函数。

1、通常情况下,Like主要用在字符类型的查询中,不会用在日期类型中。即使要用在日期类型中,也是先转换成字符型再用like。用不用like关键看你的查询需求。

2、一般情况下,查询月份都带上年份,不然搞不清是哪一年的。

3、为了查询效率,一般尽可能左边直接用字段。

所以:

select

from

[表名]

where

[字段名]

between

to_date('20080801','yyyymmdd')

and

to_date('20080831','yyyymmdd')

要比

select

from

[表名]

where

to_char([字段名],'yyyymm')

=

'200808'

--

或者:to_char([字段名],'yyyymmdd')

like

'200808%'

效率高很多。

我刚写了一个MySQL的类似sql查询。

1、将年、月、日和小时组合成一个字符串

2、月日时如果不是两位,在前面补0

3、将字符和判断区间的字符串值进行比较

select from 表   where CONCAT(vyear

,LPAD(vmonth

,2,0),LPAD(vday,2,0),LPAD(Hour,2,0)) >= '2017081000' and CONCAT(vyear,LPAD(vmonth,2,0),LPAD(vday,2,0),LPAD(Hour,2,0)) <= '2017081023'

组件使用和其他的没有什麼两样,只是在设置连接数据库的时候选择ORACLE数据库驱动就可以了

需要看你的数据库中存储的是什麼格式了

我使用的ORACLE数据库中的字段格式为'18-九月-2006

15:45:08',精确到秒

这样的格式使用

delphi查询可以这样做:

query1sqlAdd('select

from

tablename

where

DATe

>

to_date(''18-8-2006

15:45:08'',''DD-MM-YYYY

HH24:MI:SS'')

AND

DATE

<

to_date(''18-11-2006

15:45:08'',''DD-MM-YYYY

HH24:MI:SS'')'

)

;

其中'18-11-2006

15:45:08'

'18-9-2006

15:45:08'

就是要求的两个天数

select to_char(日期,'yyyy-mm-dd') from 表名

to_char就是个转换函数,将date型转成字符型,后边'yyyy-mm-dd' 就是你要转成的格式

当然,也可以to_char(日期,'yyyy') 直接返回年,月和日也同理

以上就是关于在数据库中,年和月是同一张表中的不同字段,但我要查询2013年3月到2014年6月之间的数据,sql语句怎么写全部的内容,包括:在数据库中,年和月是同一张表中的不同字段,但我要查询2013年3月到2014年6月之间的数据,sql语句怎么写、写一条查询SQL语句,要求按年月查询 竖列表头年份 横列表头12个月份、如何用Slect语句在Oracle数据库中查出具体某个月(年)的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9788378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存