Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfbf1268

Browse files
author
Thomas G. Lockhart
committed
Include tinterval comparison functions for span of interval.
1 parent5984746 commitfbf1268

File tree

1 file changed

+206
-5
lines changed

1 file changed

+206
-5
lines changed

‎src/backend/utils/adt/date.c

Lines changed: 206 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.18 1997/09/08 21:48:21 momjian Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.19 1997/09/20 16:17:45 thomas Exp $
1313
*
1414
* NOTES
1515
* This code is actually (almost) unused.
@@ -565,16 +565,217 @@ reltimege(RelativeTime t1, RelativeTime t2)
565565

566566

567567
/*
568-
*intervaleq- returns 1, iff interval i1 is equal to interval i2
568+
*intervalsame- returns 1, iff interval i1 is same as interval i2
569+
*Check begin and end time.
569570
*/
570571
bool
571-
intervaleq(TimeIntervali1,TimeIntervali2)
572+
intervalsame(TimeIntervali1,TimeIntervali2)
572573
{
573574
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
574-
return (0);/* invalid interval */
575+
return (FALSE);/* invalid interval */
575576
return (abstimeeq(i1->data[0],i2->data[0])&&
576577
abstimeeq(i1->data[1],i2->data[1]));
577-
}
578+
}/* intervalsame() */
579+
580+
581+
/*
582+
*intervaleq- returns 1, iff interval i1 is equal to interval i2
583+
*Check length of intervals.
584+
*/
585+
bool
586+
intervaleq(TimeIntervali1,TimeIntervali2)
587+
{
588+
AbsoluteTimet10,t11,t20,t21;
589+
590+
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
591+
return (FALSE);/* invalid interval */
592+
593+
t10=i1->data[0];
594+
t11=i1->data[1];
595+
t20=i2->data[0];
596+
t21=i2->data[1];
597+
598+
if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME)
599+
|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME))
600+
return (FALSE);
601+
602+
if (t10==CURRENT_ABSTIME)
603+
t10=GetCurrentTransactionStartTime();
604+
if (t11==CURRENT_ABSTIME)
605+
t11=GetCurrentTransactionStartTime();
606+
if (t20==CURRENT_ABSTIME)
607+
t20=GetCurrentTransactionStartTime();
608+
if (t21==CURRENT_ABSTIME)
609+
t21=GetCurrentTransactionStartTime();
610+
611+
return ((t11-t10)== (t21-t20));
612+
}/* intervaleq() */
613+
614+
/*
615+
*intervalne- returns 1, iff interval i1 is not equal to interval i2
616+
*Check length of intervals.
617+
*/
618+
bool
619+
intervalne(TimeIntervali1,TimeIntervali2)
620+
{
621+
AbsoluteTimet10,t11,t20,t21;
622+
623+
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
624+
return (FALSE);/* invalid interval */
625+
626+
t10=i1->data[0];
627+
t11=i1->data[1];
628+
t20=i2->data[0];
629+
t21=i2->data[1];
630+
631+
if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME)
632+
|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME))
633+
return (FALSE);
634+
635+
if (t10==CURRENT_ABSTIME)
636+
t10=GetCurrentTransactionStartTime();
637+
if (t11==CURRENT_ABSTIME)
638+
t11=GetCurrentTransactionStartTime();
639+
if (t20==CURRENT_ABSTIME)
640+
t20=GetCurrentTransactionStartTime();
641+
if (t21==CURRENT_ABSTIME)
642+
t21=GetCurrentTransactionStartTime();
643+
644+
return ((t11-t10)!= (t21-t20));
645+
}/* intervalne() */
646+
647+
/*
648+
*intervallt- returns TRUE, iff interval i1 is less than interval i2
649+
*Check length of intervals.
650+
*/
651+
bool
652+
intervallt(TimeIntervali1,TimeIntervali2)
653+
{
654+
AbsoluteTimet10,t11,t20,t21;
655+
656+
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
657+
return (FALSE);/* invalid interval */
658+
659+
t10=i1->data[0];
660+
t11=i1->data[1];
661+
t20=i2->data[0];
662+
t21=i2->data[1];
663+
664+
if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME)
665+
|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME))
666+
return (FALSE);
667+
668+
if (t10==CURRENT_ABSTIME)
669+
t10=GetCurrentTransactionStartTime();
670+
if (t11==CURRENT_ABSTIME)
671+
t11=GetCurrentTransactionStartTime();
672+
if (t20==CURRENT_ABSTIME)
673+
t20=GetCurrentTransactionStartTime();
674+
if (t21==CURRENT_ABSTIME)
675+
t21=GetCurrentTransactionStartTime();
676+
677+
return ((t11-t10)< (t21-t20));
678+
}/* intervallt() */
679+
680+
/*
681+
*intervalle- returns TRUE, iff interval i1 is less than or equal to interval i2
682+
*Check length of intervals.
683+
*/
684+
bool
685+
intervalle(TimeIntervali1,TimeIntervali2)
686+
{
687+
AbsoluteTimet10,t11,t20,t21;
688+
689+
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
690+
return (FALSE);/* invalid interval */
691+
692+
t10=i1->data[0];
693+
t11=i1->data[1];
694+
t20=i2->data[0];
695+
t21=i2->data[1];
696+
697+
if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME)
698+
|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME))
699+
return (FALSE);
700+
701+
if (t10==CURRENT_ABSTIME)
702+
t10=GetCurrentTransactionStartTime();
703+
if (t11==CURRENT_ABSTIME)
704+
t11=GetCurrentTransactionStartTime();
705+
if (t20==CURRENT_ABSTIME)
706+
t20=GetCurrentTransactionStartTime();
707+
if (t21==CURRENT_ABSTIME)
708+
t21=GetCurrentTransactionStartTime();
709+
710+
return ((t11-t10) <= (t21-t20));
711+
}/* intervalle() */
712+
713+
/*
714+
*intervalgt- returns TRUE, iff interval i1 is less than interval i2
715+
*Check length of intervals.
716+
*/
717+
bool
718+
intervalgt(TimeIntervali1,TimeIntervali2)
719+
{
720+
AbsoluteTimet10,t11,t20,t21;
721+
722+
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
723+
return (FALSE);/* invalid interval */
724+
725+
t10=i1->data[0];
726+
t11=i1->data[1];
727+
t20=i2->data[0];
728+
t21=i2->data[1];
729+
730+
if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME)
731+
|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME))
732+
return (FALSE);
733+
734+
if (t10==CURRENT_ABSTIME)
735+
t10=GetCurrentTransactionStartTime();
736+
if (t11==CURRENT_ABSTIME)
737+
t11=GetCurrentTransactionStartTime();
738+
if (t20==CURRENT_ABSTIME)
739+
t20=GetCurrentTransactionStartTime();
740+
if (t21==CURRENT_ABSTIME)
741+
t21=GetCurrentTransactionStartTime();
742+
743+
return ((t11-t10)> (t21-t20));
744+
}/* intervalgt() */
745+
746+
/*
747+
*intervalge- returns TRUE, iff interval i1 is less than or equal to interval i2
748+
*Check length of intervals.
749+
*/
750+
bool
751+
intervalge(TimeIntervali1,TimeIntervali2)
752+
{
753+
AbsoluteTimet10,t11,t20,t21;
754+
755+
if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
756+
return (FALSE);/* invalid interval */
757+
758+
t10=i1->data[0];
759+
t11=i1->data[1];
760+
t20=i2->data[0];
761+
t21=i2->data[1];
762+
763+
if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME)
764+
|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME))
765+
return (FALSE);
766+
767+
if (t10==CURRENT_ABSTIME)
768+
t10=GetCurrentTransactionStartTime();
769+
if (t11==CURRENT_ABSTIME)
770+
t11=GetCurrentTransactionStartTime();
771+
if (t20==CURRENT_ABSTIME)
772+
t20=GetCurrentTransactionStartTime();
773+
if (t21==CURRENT_ABSTIME)
774+
t21=GetCurrentTransactionStartTime();
775+
776+
return ((t11-t10) >= (t21-t20));
777+
}/* intervalge() */
778+
578779

579780
/*
580781
*intervalleneq- returns 1, iff length of interval i is equal to

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp