diff options
author | unknown <pem@mysql.com> | 2004-05-26 17:04:45 +0200 |
---|---|---|
committer | unknown <pem@mysql.com> | 2004-05-26 17:04:45 +0200 |
commit | f8866c162b57fa102298dbfc9e49d4f72f16c1d7 (patch) | |
tree | e4e5bb1f8b9718ec195b357c050b3dc3254b447d /sql/item_timefunc.cc | |
parent | 556b51e12aa58c5a7894a6bd010c2cd59d6e0cc3 (diff) | |
parent | 3a675ff5f8ed659344d7540f811ca052d999407d (diff) | |
download | mariadb-git-f8866c162b57fa102298dbfc9e49d4f72f16c1d7.tar.gz |
Merging 4.1 to 5.0.
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
include/my_sys.h:
Auto merged
include/mysql_com.h:
Auto merged
libmysql/libmysql.c:
Auto merged
libmysqld/Makefile.am:
Auto merged
libmysqld/lib_sql.cc:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisamdef.h:
Auto merged
mysql-test/r/func_group.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/null.result:
Auto merged
mysql-test/r/query_cache.result:
Auto merged
mysql-test/r/rpl_server_id2.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/variables.result:
Auto merged
mysql-test/t/rpl000015.test:
Auto merged
mysql-test/t/rpl_error_ignored_table.test:
Auto merged
mysql-test/t/rpl_log.test:
Auto merged
mysql-test/t/rpl_log_pos.test:
Auto merged
mysql-test/t/rpl_max_relay_size.test:
Auto merged
mysql-test/t/rpl_relayrotate.test:
Auto merged
mysql-test/t/rpl_rotate_logs.test:
Auto merged
mysql-test/t/rpl_server_id2.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/variables.test:
Auto merged
mysys/my_pthread.c:
Auto merged
netware/BUILD/compile-netware-all:
Auto merged
netware/BUILD/compile-netware-standard:
Auto merged
netware/BUILD/mwenv:
Auto merged
netware/Makefile.am:
Auto merged
netware/my_manage.c:
Auto merged
netware/my_manage.h:
Auto merged
netware/mysql_test_run.c:
Auto merged
scripts/mysql_install_db.sh:
Auto merged
sql/Makefile.am:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_berkeley.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/protocol.h:
Auto merged
sql/repl_failsafe.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_string.cc:
Auto merged
sql/sql_string.h:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_union.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
tests/client_test.c:
Auto merged
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r-- | sql/item_timefunc.cc | 77 |
1 files changed, 22 insertions, 55 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 2cda5dde3aa..39f67ba24f8 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1140,9 +1140,6 @@ void Item_func_curdate::fix_length_and_dec() store_now_in_tm(current_thd->query_start(),&start); - value=(longlong) ((ulong) ((uint) start.tm_year+1900)*10000L+ - ((uint) start.tm_mon+1)*100+ - (uint) start.tm_mday); /* For getdate */ ltime.year= start.tm_year+1900; ltime.month= start.tm_mon+1; @@ -1153,6 +1150,7 @@ void Item_func_curdate::fix_length_and_dec() ltime.second_part=0; ltime.neg=0; ltime.time_type=TIMESTAMP_DATE; + value= (longlong) TIME_to_ulonglong_date(<ime); } String *Item_func_curdate::val_str(String *str) @@ -1211,15 +1209,12 @@ void Item_func_curtime::fix_length_and_dec() decimals=0; store_now_in_tm(current_thd->query_start(),&start); - value=(longlong) ((ulong) ((uint) start.tm_hour)*10000L+ - (ulong) (((uint) start.tm_min)*100L+ - (uint) start.tm_sec)); - ltime.day= 0; ltime.hour= start.tm_hour; ltime.minute= start.tm_min; ltime.second= start.tm_sec; ltime.second_part= 0; ltime.neg= 0; + value= TIME_to_ulonglong_time(<ime); make_time((DATE_TIME_FORMAT *) 0, <ime, &tmp); max_length= buff_length= tmp.length(); } @@ -1262,23 +1257,12 @@ void Item_func_now::fix_length_and_dec() collation.set(&my_charset_bin); store_now_in_tm(current_thd->query_start(),&start); - value=((longlong) ((ulong) ((uint) start.tm_year+1900)*10000L+ - (((uint) start.tm_mon+1)*100+ - (uint) start.tm_mday))*(longlong) 1000000L+ - (longlong) ((ulong) ((uint) start.tm_hour)*10000L+ - (ulong) (((uint) start.tm_min)*100L+ - (uint) start.tm_sec))); /* For getdate */ - ltime.year= start.tm_year+1900; - ltime.month= start.tm_mon+1; - ltime.day= start.tm_mday; - ltime.hour= start.tm_hour; - ltime.minute= start.tm_min; - ltime.second= start.tm_sec; - ltime.second_part= 0; - ltime.neg= 0; + localtime_to_TIME(<ime, &start); ltime.time_type= TIMESTAMP_DATETIME; + + value= (longlong) TIME_to_ulonglong_datetime(<ime); make_datetime((DATE_TIME_FORMAT *) 0, <ime, &tmp); max_length= buff_length= tmp.length(); @@ -1463,10 +1447,10 @@ uint Item_func_date_format::format_length(const String *format) String *Item_func_date_format::val_str(String *str) { - DBUG_ASSERT(fixed == 1); String *format; TIME l_time; uint size; + DBUG_ASSERT(fixed == 1); if (!is_time_format) { @@ -1513,25 +1497,18 @@ null_date: String *Item_func_from_unixtime::val_str(String *str) { - DBUG_ASSERT(fixed == 1); - struct tm tm_tmp,*start; - time_t tmp=(time_t) args[0]->val_int(); + struct tm tm_tmp; + time_t tmp; TIME ltime; + DBUG_ASSERT(fixed == 1); + tmp= (time_t) args[0]->val_int(); if ((null_value=args[0]->null_value)) goto null_date; localtime_r(&tmp,&tm_tmp); - start=&tm_tmp; - - ltime.year= start->tm_year+1900; - ltime.month= start->tm_mon+1; - ltime.day= start->tm_mday; - ltime.hour= start->tm_hour; - ltime.minute= start->tm_min; - ltime.second= start->tm_sec; - ltime.second_part= 0; - ltime.neg=0; + + localtime_to_TIME(<ime, &tm_tmp); if (str->alloc(20*MY_CHARSET_BIN_MB_MAXLEN)) goto null_date; @@ -1546,19 +1523,17 @@ null_date: longlong Item_func_from_unixtime::val_int() { + TIME ltime; + struct tm tm_tmp; + time_t tmp; DBUG_ASSERT(fixed == 1); - time_t tmp=(time_t) (ulong) args[0]->val_int(); + + tmp= (time_t) (ulong) args[0]->val_int(); if ((null_value=args[0]->null_value)) return 0; - struct tm tm_tmp,*start; localtime_r(&tmp,&tm_tmp); - start= &tm_tmp; - return ((longlong) ((ulong) ((uint) start->tm_year+1900)*10000L+ - (((uint) start->tm_mon+1)*100+ - (uint) start->tm_mday))*LL(1000000)+ - (longlong) ((ulong) ((uint) start->tm_hour)*10000L+ - (ulong) (((uint) start->tm_min)*100L+ - (uint) start->tm_sec))); + localtime_to_TIME(<ime, &tm_tmp); + return (longlong) TIME_to_ulonglong_datetime(<ime); } bool Item_func_from_unixtime::get_date(TIME *ltime, @@ -1567,17 +1542,9 @@ bool Item_func_from_unixtime::get_date(TIME *ltime, time_t tmp=(time_t) (ulong) args[0]->val_int(); if ((null_value=args[0]->null_value)) return 1; - struct tm tm_tmp,*start; + struct tm tm_tmp; localtime_r(&tmp,&tm_tmp); - start= &tm_tmp; - ltime->year= start->tm_year+1900; - ltime->month= start->tm_mon+1; - ltime->day= start->tm_mday; - ltime->hour= start->tm_hour; - ltime->minute=start->tm_min; - ltime->second=start->tm_sec; - ltime->second_part=0; - ltime->neg=0; + localtime_to_TIME(ltime, &tm_tmp); return 0; } @@ -2054,7 +2021,7 @@ String *Item_date_typecast::val_str(String *str) if (!get_arg0_date(<ime,1) && !str->alloc(11)) { - make_date((DATE_TIME_FORMAT *) 0,<ime, str); + make_date((DATE_TIME_FORMAT *) 0, <ime, str); return str; } |