PostgreSQL 给定日期间隔初始时间计算

1.功能说明:

date_trunc: 截取给定时间(TIMESTAMP,date),获得指定精度(时,天,月,年)的初始使时间

2.一般时间

date_trunc(‘hour‘,TIMESTAMP ‘2018-08-16 20:38:40‘)

Result: 2018-08-16 20:00:00

date_trunc(‘day‘,TIMESTAMP ‘2018-08-16 20:38:40‘)

Result: 2018-08-16 00:00:00

date_trunc(‘month‘,TIMESTAMP ‘2018-08-16 20:38:40‘)

Result: 2018-08-01 00:00:00

date_trunc(‘year‘,TIMESTAMP ‘2018-08-16 20:38:40‘)

Result: 2018-01-01 00:00:00

3.特殊需求:

给定时间段的每年的所有月份的第一天,最后一天,下月第一天

-- Result: month_first_day, month_end_day, next_month

select date(zz) as month_first_day, date(zz + interval ‘1 month‘ - interval ‘1 day‘) as month_end_day, date(zz + interval ‘1 month‘) as next_month

from generate_series(date_trunc(‘year‘,to_date(‘20180510‘,‘yyyymmdd‘)),date_trunc(‘year‘,to_date(‘201905‘,‘yyyymmdd‘)),‘1 month‘) as tt(zz);

SQL结果:

month_first_day | month_end_day | next_month

-----------------+---------------+------------

2018-01-01      | 2018-01-31    | 2018-02-01

2018-02-01      | 2018-02-28    | 2018-03-01

2018-03-01      | 2018-03-31    | 2018-04-01

2018-04-01      | 2018-04-30    | 2018-05-01

2018-05-01      | 2018-05-31    | 2018-06-01

2018-06-01      | 2018-06-30    | 2018-07-01

2018-07-01      | 2018-07-31    | 2018-08-01

2018-08-01      | 2018-08-31    | 2018-09-01

2018-09-01      | 2018-09-30    | 2018-10-01

2018-10-01      | 2018-10-31    | 2018-11-01

2018-11-01      | 2018-11-30    | 2018-12-01

2018-12-01      | 2018-12-31    | 2019-01-01

2019-01-01      | 2019-01-31    | 2019-02-01

(13 rows)

找出指定时间小时,天,月,年的初始值

-- Result: dtrunc_hour, dtrunc_day, dtrunc_month, dtrunc_year

SELECT date_trunc(‘hour‘, TIMESTAMP ‘2018-08-16 20:38:40‘) as dtrunc_hour ,date_trunc(‘day‘, TIMESTAMP ‘2018-08-16 20:38:40‘) as dtrunc_day,date_trunc(‘month‘, TIMESTAMP ‘2018-08-16 20:38:40‘) as dtrunc_month,date_trunc(‘year‘, TIMESTAMP ‘2018-08-16 20:38:40‘) as dtrunc_year;

SQL结果:

dtrunc_hour     |     dtrunc_day      |    dtrunc_month     |     dtrunc_year

---------------------+---------------------+---------------------+---------------------

2018-08-16 20:00:00 | 2018-08-16 00:00:00 | 2018-08-01 00:00:00 | 2018-01-01 00:00:00

(1 row)

postgres=#

时间: 2024-11-05 21:37:15

PostgreSQL 给定日期间隔初始时间计算的相关文章

java计算两日期间隔小时或分钟

public static void main(String[] args) {        try {            long min = dateDiff("2014-05-27 13:30:00","2014-05-27 13:00:00","yyyy-MM-dd HH:mm:ss");            System.out.println("---------相隔分钟数: "+min);        

C语言计算日期间隔天数的经典算法解析

在网上看到了一个计算日期间隔的方法,咋一看很高深,仔细看更高神,很巧妙. 先直接代码吧 #include <stdio.h> #include <stdlib.h> int day_diff(int year_start, int month_start, int day_start , int year_end, int month_end, int day_end) { int y2, m2, d2; int y1, m1, d1; m1 = (month_start + 9)

日期和时间计算

最近在学习muduo网络库源码,小结一下日期和时间计算. 概念 GMT(UT).UTC.AD.CE.BC等略.参考:http://www.hermetic.ch/cal_stud/jdn.htm 儒略日(Julian day number, 这里简称为JD)起始时间为GMT -4712-01-01(i.e.4713 B.C.),中午12时.此刻2015年11月8日18:00:00的儒略日是2457335.25,0.1表示2.4小时.144分钟或者8640秒,以此类推.由于儒略日数字位数太多,国际

C# 时间计算 今天、昨天、前天、明天 一个月的开始日期与结束日期

C# 时间计算 今天.昨天.前天.明天 class Program    {        static void Main(string[] args)        {            DateTime dt1=GetTodayZeroTime(DateTime.Now);            Console.WriteLine("今天零点:{0}",dt1.ToString() );            DateTime dt2 = GetYestodayZeroTim

PHP 计算两个日期间隔天数

PHP 计算两个日期间隔天数,可以使用date_diff( )函数: <?php $datetime1 = date_create('2009-10-11'); $datetime2 = date_create('2009-10-13'); $interval = date_diff($datetime1, $datetime2); echo $interval->format('%R%a days'); ?> 浏览器输出结果:

SWIFT中计算两个日期间隔多少小时

SWIFT中如何计算两个日期间隔多少个小时,其实几句代码就可以搞定了,Very Easy,在Playground内输入以下代码 var date1 = "2015-06-26 8:15:10" var dateformatter = NSDateFormatter() dateformatter.dateFormat = "yyyy-MM-dd hh:mm:ss" var dateresult = dateformatter.dateFromString(date1

Python基础学习笔记(十)日期Calendar和时间Timer

参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 时间间隔是以秒为单位的浮点函数.获取该时间的实例如下: 时间元组struct_time: 序号 属性 值 0 tm_year 2008 1 tm_mon 1 到 12 2 t

MySQL中判断日期间隔的方法

MySQL中查询一定时间间隔内的数据的方法比较常用,可以使用TO_DAYS.DATE_SUB等函数来实现. TO_DAYS函数的作用是返回指定日期从0年开始计算的天数. DATE_SUB函数的作用是通过指定日期减去指定间隔时间. 从而可以实现今天.昨天.最近7天(一周).最近30天(1个月).上个月等等查询方法.例子如下: 1.今天 SELECT * FROM t1 WHERE TO_DAYS(adddate) = TO_DAYS(CURDATE()); 2.昨天 SELECT * FROM t

[转]【VBA研究】VBA中日期和时间相关的计算

作者:iamlaosong http://blog.csdn.net/iamlaosong/article/details/18458253 VBA中取当前日期的函数是Date,当前时间的函数是Time,当前日期和时间一起取是Now.日期转换成年月日的函数分别是:Year.Month.Day,参数可以用Date或Now取出的值.时间转换成时分秒的函数分别是:Hour.Minute.Second,参数可以用Time或Now取出的值. 例如:   MsgBox "当前时间:" &