mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	 09ba29e539
			
		
	
	09ba29e539
	
	
	
		
			
			Added basic per-thread time zone functionality (based on public domain elsie-code). Now user can select current time zone (from the list of time zones described in system tables). All NOW-like functions honor this time zone, values of TIMESTAMP type are interpreted as values in this time zone, so now our TIMESTAMP type behaves similar to Oracle's TIMESTAMP WITH LOCAL TIME ZONE (or proper PostgresSQL type). WL#1266 "CONVERT_TZ() - basic time with time zone conversion function". Fixed problems described in Bug #2336 (Different number of warnings when inserting bad datetime as string or as number). This required reworking of datetime realted warning hadling (they now generated at Field object level not in conversion functions). Optimization: Now Field class descendants use table->in_use member instead of current_thd macro.
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| DROP TABLE IF EXISTS t1;
 | |
| show variables like "system_time_zone";
 | |
| Variable_name	Value
 | |
| system_time_zone	MET
 | |
| select @a:=FROM_UNIXTIME(1);
 | |
| @a:=FROM_UNIXTIME(1)
 | |
| 1970-01-01 01:00:01
 | |
| select unix_timestamp(@a);
 | |
| unix_timestamp(@a)
 | |
| 1
 | |
| CREATE TABLE t1 (ts int);
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 01:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 02:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 03:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 02:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 01:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 02:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 02:59:59'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 03:00:00'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 03:59:59'));
 | |
| INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 04:00:01'));
 | |
| SELECT ts,from_unixtime(ts) FROM t1;
 | |
| ts	from_unixtime(ts)
 | |
| 1035673200	2002-10-27 01:00:00
 | |
| 1035680400	2002-10-27 02:00:00
 | |
| 1035684000	2002-10-27 03:00:00
 | |
| 1035680400	2002-10-27 02:00:00
 | |
| 1035673200	2002-10-27 01:00:00
 | |
| 1035680400	2002-10-27 02:00:00
 | |
| 1048986000	2003-03-30 03:00:00
 | |
| 1048986000	2003-03-30 03:00:00
 | |
| 1048989599	2003-03-30 03:59:59
 | |
| 1048989601	2003-03-30 04:00:01
 | |
| DROP TABLE t1;
 | |
| CREATE TABLE t1 (ts timestamp);
 | |
| INSERT INTO t1 (ts) VALUES ('2003-03-30 01:59:59'),
 | |
| ('2003-03-30 02:59:59'),
 | |
| ('2003-03-30 03:00:00');
 | |
| Warnings:
 | |
| Warning	1299	Invalid TIMESTAMP value in column 'ts' at row 2
 | |
| DROP TABLE t1;
 | |
| select unix_timestamp('1970-01-01 01:00:00'), 
 | |
| unix_timestamp('1970-01-01 01:00:01'),
 | |
| unix_timestamp('2038-01-01 00:59:59'),
 | |
| unix_timestamp('2038-01-01 01:00:00');
 | |
| unix_timestamp('1970-01-01 01:00:00')	unix_timestamp('1970-01-01 01:00:01')	unix_timestamp('2038-01-01 00:59:59')	unix_timestamp('2038-01-01 01:00:00')
 | |
| 0	1	2145916799	0
 |