postgresql获取指定时间(如当月第一天、最后一天、下个月的第n天等) |
您所在的位置:网站首页 › 手机wps历史版本只显示最后一天和第一天的 › postgresql获取指定时间(如当月第一天、最后一天、下个月的第n天等) |
目录 问题现象: 问题分析: 常用的获取指定时间方法: 1.首先是获取当前时间: 2.获取当月的第一天: 3.获取上个月的最后一天: 4.获取本月最后一天: 拓展: 结构: 说明: 问题现象:今天在项目开发中遇到了一个需求,在编写某个功能时,需要使用到基于某个时间(如当前时间),去获取本月第一天或下个月的第一天的数据. 问题分析:通过查询资料可以得知,要实现这个需求并不容易,在sql语句中就能很好的获取到,这里我使用的是postgresql数据库,其他数据库应该也是使用了差不多的逻辑. 常用的获取指定时间方法: 1.首先是获取当前时间: select now(); //返回值:当前年月日、时分秒,且秒保留6位小数。 select current_date; //返回值:当前年月日、时分秒,且秒保留6位小数。(同now()) select current_timestamp; //返回值:时分秒,秒最高精确到6位 select current_time; //返回值:年月日 2.获取当月的第一天: select date_trunc('month',current_date); //date_trunc()函数用于设置时间基点,功能类似于java中的Calender工具类 3.获取上个月的最后一天: select date_trunc('month',current_date) - interval'1 day' //基于当月第一天,倒退1天 4.获取本月最后一天: select date_trunc('month',current_date) + interval'1 month - 1 day' //基于当月第一天,前进一个月,再倒退1天(如当月第一天为 2020-08-01; +1 month 前进一个月为 2020-09-01; 再 - 1 day 倒退1天为 2020-08-31) 拓展:date_trunc函数: 结构:date_trunc('时间单位',时间) + interval'偏移参数' 说明:1.系统会自动根据运算结果的年份对应的月份,来计算天数的运算,也就是说不用关注2月份是28天还是29天,也不用关注有些月份是31天,有些月份是30天,系统就自动进行推演运算. 2.这里用到了date_trunc()函数,是用于建立时间基点: 如:date_trunc('month',current_date) 就是将当前时间对应的月份作为基点'month',这里自动默认选取月份的第一天作为基点. 3.interval'' 表达式,用于推演并计算日期时间,就是在原有基础上添加这个表达式中的内容,: 如:+ interval'1 month - 1 day' 就是在基点上添加内容为 ' 1个月 , -1天 ' ;这里面的 1 month没有带+符号为正数, 表示 前进一个月, -1 day 带-符号为负数, 则表示 倒退一天 ,因此在当月第一天的基础上前进一个月再倒退一天,从逻辑上推演就可以得知,结果为当月的最后一天. 4.根据以上的date_trunc()函数和interval'' 表达式,就可以获取到: 基于基点时间计算得到的任何一天的日期时间. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |