查询从开始日期到结束日期间的数据(当前日期往前或往后推N天)

一、前端js

js获取当前日期加上30天之后的日期

var date1 = new Date();

var date2 = new Date(date1);

date2.setDate(date1.getDate() + 30);

console.log(date2.getFullYear() + "-" + (date2.getMonth() + 1) + "-" + date2.getDate() + "-"+ date2.getDay());

同理,往前推也使用(年-月-日-星期)(亲试可行)

二、oracle数据库查询(参数:startDate、endDate)

Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程。我们假设要查询2019-05-02到2019-05-30之间的数据,实现方式如下:
to_date方式:select *
  from ycl_kqzlqk
 where jcrq >= to_date('2018-12-30','yyyy-mm-dd')
   and jcrq <= to_date('2019-3-31','yyyy-mm-dd')

备注:jcrq 为数据库字段名,startDate = '2018-12-30',endDate = '2019-3-31'

运行的结果是:使用plsqldev,可以查出两者间数据,也包含左右临界日期。(亲试可行)

to_char方式:
同样查询上面两个日期

select * from tablename where to_char(time,'yyyy-mm-dd')>='2011-05-02' and to_char(time,'yyyy-mm-dd')<='2011-05-30'

查询结果:可以同时显示05-02和05-30的数据。(待尝试)

三、java当前日期往前推N天或者N个月

日期:往期推7天

public string[] Day(string date)

        {

            string[] dateTimes = new string[7];// 日期节点

            date = date.Replace('/', '-');

            int pYears = Convert.ToInt32(date.Split('-')[0]);

            int pMonths = Convert.ToInt32(date.Split('-')[1]);

            int days = DateTime.DaysInMonth(pYears, pMonths);

            int pDay = Convert.ToDateTime(date).Day;

            string time1 = "";

            string time2 = "";

            for (int i = 0; i < 7; i++)

            {

                if(i!=0)

                {

                    pDay = pDay - 1;

                }

                if (pMonths < 10)

                {

                    time1 = "0" + pMonths;

                }

                else

                {

                    time1 = Convert.ToString(pMonths);

                }

                if (pDay < 10)

                {

                    time2 = "0" + pDay;

                }

                else

                {

                    time2 =Convert.ToString(pDay);

                }

                string datetime1 = (pYears + "-" + time1 + "-" + time2);// 每天的开始时间也可以加上“00:00: 00”

                int vMaxs = DateTime.DaysInMonth(pYears, pMonths);// 每个月的天数

                string datetime2 = (pYears + "-" + time1 + "-" + time2);// 每天的结束时间“23 :59 :59”

               // datetime1和datetime2两个选其中一个就OK了

                for (int j = i; j <= i; j++)

                {

                    dateTimes[i] = datetime1;

                }

            }

//数组 取反 因为我们是从最近的日期开始往前推,所以我们要把渠道的日期反过来从小到大,看需求,可写可不写          

  Array.Reverse(dateTimes);  

            return dateTimes;

        }

日期:往前推5个月

public string[] datetomaxday(string date)

        {

// 定义下标为6的原因是因为,我们要求的是往前推五个月是五个时间区间不是五个时间节点     

string[] dateTimes = new string[6];// 8.30  9.30  10.30  11.30  12.30  01.30 六个时间节点

            date = date.Replace('/', '-');//把 / 替换为 -

            int pYears = Convert.ToInt32(date.Split('-')[0]);

            int pMonths = Convert.ToInt32(date.Split('-')[1]);

            int it = pYears + 1;

            for (int i = 0; i < 6; i++)

            {

                if (pMonths == 1 && i == 1)

                {

                    pYears = pYears - 1;

                    pMonths = 12;

                }

                else

                {

                    if (pMonths == 1)

                    {

                        pMonths = pMonths - 0;

                    }

                    else

                    {

                        pMonths = pMonths - 1;

                    }

                }

                string datetime1 = (pYears + "-" + pMonths + "-01 00:00:00");// 求每个月月初的时间

                int vMaxs = DateTime.DaysInMonth(pYears, pMonths);// 求所每个月的天数

                string datetime2 = (pYears + "-" + pMonths + "-" + vMaxs + " 23:59:59");// 每个月月末的时间

              // datetime1和datetime2两个选其中一个就OK了

                for (int j = i; j <= i; j++)

                {

                    dateTimes[i] = datetime2;

                }

            }

//数组 取反 因为我们是从最近的日期开始往前推,所以我们要把渠道的日期反过来从小到大,看需求,可写可不写 

            Array.Reverse(dateTimes); 

            return dateTimes;

        }
版权声明:本文为CSDN博主「IT界泥石流」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zw_980512/article/details/86528513

从博文上看到,并未试试是否可行(待运行)

添加笔者用到此功能 的例子:https://blog.csdn.net/qq_23128255/article/details/120043061

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值