7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.32 1997/08/19 21:34:34 momjian Exp $
10
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.33 1997/08/21 23:56:40 momjian Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -645,7 +645,7 @@ datetime_larger(DateTime *datetime1, DateTime *datetime2)
645
645
646
646
647
647
TimeSpan *
648
- datetime_sub (DateTime * datetime1 , DateTime * datetime2 )
648
+ datetime_mi (DateTime * datetime1 , DateTime * datetime2 )
649
649
{
650
650
TimeSpan * result ;
651
651
@@ -672,10 +672,10 @@ datetime_sub(DateTime *datetime1, DateTime *datetime2)
672
672
result -> month = 0 ;
673
673
674
674
return (result );
675
- } /* datetime_sub () */
675
+ } /* datetime_mi () */
676
676
677
677
678
- /* datetime_add_span ()
678
+ /* datetime_pl_span ()
679
679
* Add a timespan to a datetime data type.
680
680
* Note that timespan has provisions for qualitative year/month
681
681
* units, so try to do the right thing with them.
@@ -684,7 +684,7 @@ datetime_sub(DateTime *datetime1, DateTime *datetime2)
684
684
* to the last day of month.
685
685
*/
686
686
DateTime *
687
- datetime_add_span (DateTime * datetime , TimeSpan * span )
687
+ datetime_pl_span (DateTime * datetime , TimeSpan * span )
688
688
{
689
689
DateTime * result ;
690
690
DateTime dt ;
@@ -697,7 +697,7 @@ datetime_add_span(DateTime *datetime, TimeSpan *span)
697
697
result = PALLOCTYPE (DateTime );
698
698
699
699
#ifdef DATEDEBUG
700
- printf ( "datetime_add_span - add %f to %d %f\n" , * datetime , span -> month , span -> time );
700
+ printf ( "datetime_pl_span - add %f to %d %f\n" , * datetime , span -> month , span -> time );
701
701
#endif
702
702
703
703
if (DATETIME_NOT_FINITE (* datetime )) {
@@ -721,7 +721,7 @@ printf( "datetime_add_span- add %f to %d %f\n", *datetime, span->month, span->ti
721
721
722
722
if (datetime2tm ( dt , & tz , tm , & fsec , & tzn ) == 0 ) {
723
723
#ifdef DATEDEBUG
724
- printf ( "datetime_add_span - date was %04d-%02d-%02d %02d:%02d:%02d\n" ,
724
+ printf ( "datetime_pl_span - date was %04d-%02d-%02d %02d:%02d:%02d\n" ,
725
725
tm -> tm_year , tm -> tm_mon , tm -> tm_mday , tm -> tm_hour , tm -> tm_min , tm -> tm_sec );
726
726
#endif
727
727
tm -> tm_mon += span -> month ;
@@ -743,7 +743,7 @@ printf( "datetime_add_span- date was %04d-%02d-%02d %02d:%02d:%02d\n",
743
743
};
744
744
745
745
#ifdef DATEDEBUG
746
- printf ( "datetime_add_span - date becomes %04d-%02d-%02d %02d:%02d:%02d\n" ,
746
+ printf ( "datetime_pl_span - date becomes %04d-%02d-%02d %02d:%02d:%02d\n" ,
747
747
tm -> tm_year , tm -> tm_mon , tm -> tm_mday , tm -> tm_hour , tm -> tm_min , tm -> tm_sec );
748
748
#endif
749
749
if (tm2datetime ( tm , fsec , & tz , & dt ) != 0 )
@@ -758,10 +758,10 @@ printf( "datetime_add_span- date becomes %04d-%02d-%02d %02d:%02d:%02d\n",
758
758
};
759
759
760
760
return (result );
761
- } /* datetime_add_span () */
761
+ } /* datetime_pl_span () */
762
762
763
763
DateTime *
764
- datetime_sub_span (DateTime * datetime , TimeSpan * span )
764
+ datetime_mi_span (DateTime * datetime , TimeSpan * span )
765
765
{
766
766
DateTime * result ;
767
767
TimeSpan tspan ;
@@ -772,10 +772,10 @@ datetime_sub_span(DateTime *datetime, TimeSpan *span)
772
772
tspan .month = - span -> month ;
773
773
tspan .time = - span -> time ;
774
774
775
- result = datetime_add_span ( datetime , & tspan );
775
+ result = datetime_pl_span ( datetime , & tspan );
776
776
777
777
return (result );
778
- } /* datetime_sub_span () */
778
+ } /* datetime_mi_span () */
779
779
780
780
781
781
TimeSpan *
@@ -885,7 +885,7 @@ printf( "timespan_larger- months %d %d times %f %f spans %f %f\n",
885
885
886
886
887
887
TimeSpan *
888
- timespan_add (TimeSpan * span1 , TimeSpan * span2 )
888
+ timespan_pl (TimeSpan * span1 , TimeSpan * span2 )
889
889
{
890
890
TimeSpan * result ;
891
891
@@ -898,10 +898,10 @@ timespan_add(TimeSpan *span1, TimeSpan *span2)
898
898
result -> time = JROUND (span1 -> time + span2 -> time );
899
899
900
900
return (result );
901
- } /* timespan_add () */
901
+ } /* timespan_pl () */
902
902
903
903
TimeSpan *
904
- timespan_sub (TimeSpan * span1 , TimeSpan * span2 )
904
+ timespan_mi (TimeSpan * span1 , TimeSpan * span2 )
905
905
{
906
906
TimeSpan * result ;
907
907
@@ -914,8 +914,27 @@ timespan_sub(TimeSpan *span1, TimeSpan *span2)
914
914
result -> time = JROUND (span1 -> time - span2 -> time );
915
915
916
916
return (result );
917
- } /* timespan_sub () */
917
+ } /* timespan_mi () */
918
918
919
+ TimeSpan *
920
+ timespan_div (TimeSpan * span1 , float8 * arg2 )
921
+ {
922
+ TimeSpan * result ;
923
+
924
+ if ((!PointerIsValid (span1 )) || (!PointerIsValid (arg2 )))
925
+ return NULL ;
926
+
927
+ if (!PointerIsValid (result = PALLOCTYPE (TimeSpan )))
928
+ elog (WARN ,"Memory allocation failed, can't subtract timespans" ,NULL );
929
+
930
+ if (* arg2 == 0.0 )
931
+ elog (WARN ,"timespan_div: divide by 0.0 error" );
932
+
933
+ result -> month = rint (span1 -> month / * arg2 );
934
+ result -> time = JROUND (span1 -> time / * arg2 );
935
+
936
+ return (result );
937
+ } /* timespan_div() */
919
938
920
939
/* datetime_age()
921
940
* Calculate time difference while retaining year/month fields.
0 commit comments