SQL中取一个月的数据的处理方式

本文介绍了如何在SQL中选取特定月份的数据和前一个月的数据。对于选取一个月的数据,可以通过TO_CHAR函数结合条件筛选实现。而获取前一个月的数据则需要结合SYSDATE、ADD_MONTHS和LAST_DAY函数进行计算,文中提供了详细的SQL语句示例。
摘要由CSDN通过智能技术生成

前提:

场景设置:表T,其中有属性date表示表中数据的更新时间。

问题:取一个月的数据:2015 年1月的数据。

    取前一个月的数,当前月份未知。

一,取一个月的数据

对于知道确定月份的需求,SQL处理很简单:

SELECT * FROM T WHERE TO_CHAR(date,'yyyy-mm')='2015-01';

二,取前一个月的数

这个就需要从sysdate着手,需要从此获取到前一个月的具体月份值:

参考:http://www.cnblogs.com/mybi/archive/2012/09/05/2671761.html

SELECT CONCAT(TO_CHAR(SYSDATE, 'yyyy') ||
              TO_CHAR(ADD_MONTHS(SYSDATE, -1), '-MM-'), '01 00:00:00') START_TIME
      ,
       
       CONCAT(TO_CHAR(SYSDATE, 'yyyy') ||
              TO_CHAR(ADD_MONTHS(SYSDATE, -1), '-MM-') ||
              TO_CHAR(LAST_DAY(SYSDATE), 'dd '), '23:59:59') END_TIME
  FROM DUAL;

  结果:

解读:

1,CONCAT(字串1, 字串2, 字串3, ...):

将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。

  • MySQL: CONCAT()
  • Oracle: CONCAT(), ||
  • SQL Server: + 

2,T0_CHAR(,):

             参考:http://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html
表 5-7. 格式化函数

 

函数 返回 描述 例子
to_char(timestamp, text) text 把 timestamp 转换成 string to_char(timestamp 'now','HH12:MI:SS')
to_char(int, text) text 把 int4/int8 转换成 string to_char(125, '999')
to_char(float, text) text 把 float4/float8 转换成 string to_char(125.8, '999D9')
to_char(numeric, text) text 把 numeric 转换成 string to_char(numeric '-125.8', '999D99S')
to_date(text, text) date 把 string 转换成 date to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) date 把 string 转换成 timestamp to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_number(text, text) numeric 把 string 转换成 numeric to_number('12,454.8-', '99G999D9S')

表 5-8. 用于 date/time 转换的模板
 

模板
描述
HH
一天的小时数 (01-12)
HH12
一天的小时数 (01-12)
HH24
一天的小时数 (00-23)
MI
分钟 (00-59)
SS
秒 (00-59)
SSSS
午夜后的秒 (0-86399)
AM or A.M. or PM or P.M.
正午标识(大写)
am or a.m. or pm or p.m.
正午标识(小写)
Y,YYY
带逗号的年(4 和更多位)
YYYY
年(4和更多位)
YYY
年的后三位
YY
年的后两位
Y
年的最后一位
BC or B.C. or AD or A.D.
年标识(大写)
bc or b.c. or ad or a.d.
年标识(小写)
MONTH
全长大写月份名(9字符)
Month
全长混合大小写月份名(9字符)
month
全长小写月份名(9字符)
MON
大写缩写月份名(3字符)
Mon
缩写混合大小写月份名(3字符)
mon
小写缩写月份名(3字符)
MM
月份 (01-12)
DAY
全长大写日期名(9字符)
Day
全长混合大小写日期名(9字符)
day
全长小写日期名(9字符)
DY
缩写大写日期名(3字符)
Dy
缩写混合大小写日期名(3字符)
dy
缩写小
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值