summaryrefslogtreecommitdiff
path: root/contrib/datetime/datetime_functions.sql.in
blob: 83e9eac9d4c0e8df95367a165d2f10b4fb785b82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
-- datetime_functions.sql --
--
-- SQL code to define the new date and time functions and operators
--
-- Copyright (c) 1998, Massimo Dal Zotto <[email protected]>
--
-- This file is distributed under the GNU General Public License
-- either version 2, or (at your option) any later version.

-- Define the new time functions.
--
create function hhmm_in(opaque) returns time
  as 'MODULE_PATHNAME' 
  language 'c';

create function hhmm_out(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function hhmm(time) returns time
  as 'MODULE_PATHNAME' 
  language 'c';

create function time_difference(time,time) returns time
  as 'MODULE_PATHNAME' 
  language 'c';

create function time_hours(time) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function time_minutes(time) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function time_seconds(time) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function as_minutes(time) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function as_seconds(time) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function date_day(date) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function date_month(date) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function date_year(date) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function currenttime() returns time
  as 'MODULE_PATHNAME' 
  language 'c';

create function currentdate() returns date
  as 'MODULE_PATHNAME' 
  language 'c';

-- Define new operator - for time.
--
create operator - (
  leftarg=time, 
  rightarg=time, 
  procedure=time_difference);

-- Define functions to switch from time to hhmm representation.
--
--   select hhmm_mode();
--   select time_mode();
--
create function hhmm_mode() returns text
  as 'update pg_type set typinput =''hhmm_in''  where typname=''time'';
      update pg_type set typoutput=''hhmm_out'' where typname=''time''
      select ''hhmm_mode''::text'
  language 'sql';

create function time_mode() returns text
  as 'update pg_type set typinput =''time_in''  where typname=''time'';
      update pg_type set typoutput=''time_out'' where typname=''time''
      select ''time_mode''::text'
  language 'sql';

-- Use these to do the updates manually
--
-- update pg_type set typinput ='hhmm_in'  where typname='time';
-- update pg_type set typoutput='hhmm_out' where typname='time';
--
-- update pg_type set typinput ='time_in'  where typname='time';
-- update pg_type set typoutput='time_out' where typname='time';

-- end of file