mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			MySQL
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			MySQL
		
	
	
	
	
	
| -- SQL code to define the new date and time functions and operators
 | |
| 
 | |
| -- Define the new 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 a 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
 |