/* * datetime_functions.c -- * * This file defines new functions for the time and date data types. * * Copyright (c) 1996, Massimo Dal Zotto */ #include #include "postgres.h" #include "utils/palloc.h" #include "utils/datetime.h" TimeADT * time_difference(TimeADT *time1, TimeADT *time2) { TimeADT *result = (TimeADT *) palloc(sizeof(TimeADT)); *result = *time1 - *time2; return (result); } TimeADT * currenttime() { time_t current_time; struct tm *tm; TimeADT *result = (TimeADT *) palloc(sizeof(TimeADT)); current_time = time(NULL); tm = localtime(¤t_time); *result = ((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec); return (result); } DateADT currentdate() { time_t current_time; struct tm *tm; DateADT result; current_time = time(NULL); tm = localtime(¤t_time); result = date2j(tm->tm_year, tm->tm_mon + 1, tm->tm_mday) - date2j(100, 1, 1); return (result); } int4 hours(TimeADT *time) { return (*time / (60 * 60)); } int4 minutes(TimeADT *time) { return (((int) (*time / 60)) % 60); } int4 seconds(TimeADT *time) { return (((int) *time) % 60); } int4 day(DateADT *date) { struct tm tm; j2date((*date + date2j(2000, 1, 1)), &tm.tm_year, &tm.tm_mon, &tm.tm_mday); return (tm.tm_mday); } int4 month(DateADT *date) { struct tm tm; j2date((*date + date2j(2000, 1, 1)), &tm.tm_year, &tm.tm_mon, &tm.tm_mday); return (tm.tm_mon); } int4 year(DateADT *date) { struct tm tm; j2date((*date + date2j(2000, 1, 1)), &tm.tm_year, &tm.tm_mon, &tm.tm_mday); return (tm.tm_year); } int4 asminutes(TimeADT *time) { int seconds = (int) *time; return (seconds / 60); } int4 asseconds(TimeADT *time) { int seconds = (int) *time; return (seconds); }