433 lines
20 KiB
SQL
433 lines
20 KiB
SQL
-- input string.
|
|
drop table dt;
|
|
create table dt(id int primary key auto_increment, pre varchar(100), str varchar(100), suf varchar(100),
|
|
dt_val datetime(6), d_val date, t_val time(6),
|
|
dt_useconds bigint, d_days int, t_useconds bigint);
|
|
set sql_mode = 'no_zero_date,no_zero_in_date';
|
|
-- good format.
|
|
insert into dt(str) values ('2015-05-30 11:12:13.1415');
|
|
insert into dt(str) values ('2015.05.30 11.12.13.1415');
|
|
insert into dt(str) values ('2015/05/30 11/12/13.1415');
|
|
insert into dt(str) values ('2015+05=30 11*12&13.1415');
|
|
insert into dt(str) values ('2015^05%30 11$12#13.1415');
|
|
insert into dt(str) values ('2015@05!30 11~12`13.1415');
|
|
-- good format but bad values.
|
|
insert into dt(str) values ('0000-05-30 11:12:13.1415');
|
|
insert into dt(str) values ('00002015-00000005-00000030 11:12:13.1415');
|
|
insert into dt(str) values ('00000015-00000005-00000030 11:12:13.1415');
|
|
insert into dt(str) values ('00000015.00000005.00000030 11:12:13.1415');
|
|
insert into dt(str) values ('10000-05-30 11:12:13.1415');
|
|
insert into dt(str) values ('10000.05.30 11:12:13.1415');
|
|
insert into dt(str) values ('2015-13-30 11:12:13.1415');
|
|
insert into dt(str) values ('2015-05-32 11:12:13.1415');
|
|
insert into dt(str) values ('2015-05-30 24:12:13.1415');
|
|
insert into dt(str) values ('2015-05-30 11:60:13.1415');
|
|
insert into dt(str) values ('2015-05-30 11:12:60.1415');
|
|
insert into dt(str) values ('2015-12-31 23:59:59.9999999');
|
|
-- bad format with no delimiter.
|
|
insert into dt(str) values ('10');
|
|
insert into dt(str) values ('101');
|
|
insert into dt(str) values ('1011');
|
|
insert into dt(str) values ('10111');
|
|
insert into dt(str) values ('101112');
|
|
insert into dt(str) values ('1011121');
|
|
insert into dt(str) values ('10111213');
|
|
insert into dt(str) values ('101112131');
|
|
insert into dt(str) values ('1011121314');
|
|
insert into dt(str) values ('10111213141');
|
|
insert into dt(str) values ('101112131415');
|
|
insert into dt(str) values ('1011121314151');
|
|
insert into dt(str) values ('10111213141516');
|
|
insert into dt(str) values ('101112131415161');
|
|
insert into dt(str) values ('1011121314151617');
|
|
insert into dt(str) values ('10111213141516171');
|
|
insert into dt(str) values ('101112131415161718');
|
|
-- bad format with only one delimiter '.'.
|
|
insert into dt(str) values ('10');
|
|
insert into dt(str) values ('10.1');
|
|
insert into dt(str) values ('10.11');
|
|
insert into dt(str) values ('1011.1');
|
|
insert into dt(str) values ('1011.12');
|
|
insert into dt(str) values ('101112.1');
|
|
insert into dt(str) values ('101112.13');
|
|
insert into dt(str) values ('10111213.1');
|
|
insert into dt(str) values ('10111213.14');
|
|
insert into dt(str) values ('1011121314.1');
|
|
insert into dt(str) values ('1011121314.15');
|
|
insert into dt(str) values ('101112131415.1');
|
|
insert into dt(str) values ('101112131415.16');
|
|
insert into dt(str) values ('101112131415.16.17');
|
|
insert into dt(str) values ('101112131415.16-17');
|
|
insert into dt(str) values ('101112131415..16');
|
|
insert into dt(str) values ('101112131415..16.17');
|
|
insert into dt(str) values ('101112131415..16-17');
|
|
insert into dt(str) values ('101112131415.-.16');
|
|
insert into dt(str) values ('101112131415.-.16.17');
|
|
insert into dt(str) values ('101112131415.-.16-17');
|
|
insert into dt(str) values ('101112131415-16');
|
|
insert into dt(str) values ('101112131415-16.17');
|
|
insert into dt(str) values ('101112131415-16-17');
|
|
insert into dt(str) values ('101112131415.161111.17');
|
|
insert into dt(str) values ('101112131415.1611112.17');
|
|
insert into dt(str) values ('10111213141516.1');
|
|
insert into dt(str) values ('10111213141516.17');
|
|
insert into dt(str) values ('1011121314151617.1');
|
|
insert into dt(str) values ('1011121314151617.18');
|
|
insert into dt(str) values ('101112131415161.718');
|
|
insert into dt(str) values ('10111213141516.1718');
|
|
insert into dt(str) values ('1011121314151.61718');
|
|
insert into dt(str) values ('101112131415.161718');
|
|
insert into dt(str) values ('10111213141.5161718');
|
|
insert into dt(str) values ('1011121314.15161718');
|
|
insert into dt(str) values ('101112131.415161718');
|
|
insert into dt(str) values ('10111213.1415161718');
|
|
insert into dt(str) values ('1011121.31415161718');
|
|
insert into dt(str) values ('101112.131415161718'); -- mysql is wrong when update to time: 10:11:12.131416, usecond part round to 6 digits should be 131415.
|
|
-- the reason is mysql continue reading digits after has gotten 6 digits for usecond until reach the first
|
|
-- non-digit, and uses the last digit to determine whether should plus 1 to usecond when it convert a string
|
|
-- to time, but no bug when convert to datetime because they use different code to read digits after usecond.
|
|
insert into dt(str) values ('10111.2131415161718');
|
|
insert into dt(str) values ('1011.12131415161718');
|
|
insert into dt(str) values ('101.112131415161718');
|
|
insert into dt(str) values ('10.1112131415161718');
|
|
-- bad format with two delimiters '.'.
|
|
insert into dt(str) values ('10.11121314151617.18');
|
|
insert into dt(str) values ('101.112131415161.718');
|
|
insert into dt(str) values ('1011.1213141516.1718');
|
|
insert into dt(str) values ('10111.21314151.61718');
|
|
insert into dt(str) values ('101112.131415.161718');
|
|
insert into dt(str) values ('1011121.3141.5161718');
|
|
insert into dt(str) values ('10111213.14.15161718');
|
|
insert into dt(str) values ('101112131415.1.61718');
|
|
insert into dt(str) values ('101112131415.16.1718');
|
|
insert into dt(str) values ('101112131415.161.718');
|
|
insert into dt(str) values ('10111213141516.1.718');
|
|
insert into dt(str) values ('10111213141516.17.18');
|
|
insert into dt(str) values ('10111213141516.171.8');
|
|
insert into dt(str) values ('10..1112131415161718');
|
|
insert into dt(str) values ('101..112131415161718');
|
|
insert into dt(str) values ('1011..12131415161718');
|
|
insert into dt(str) values ('10111213141516..1718');
|
|
insert into dt(str) values ('101112131415161..718');
|
|
insert into dt(str) values ('1011121314151617..18');
|
|
-- bad format with more delimiters except space.
|
|
insert into dt(str) values ('2012.010112345');
|
|
insert into dt(str) values ('2012+010112345');
|
|
insert into dt(str) values ('2012.01=0112345');
|
|
insert into dt(str) values ('2012*01=0112345');
|
|
insert into dt(str) values ('2012.01=011*2345');
|
|
insert into dt(str) values ('2012!01=011*2345');
|
|
insert into dt(str) values ('2012.*01^011&2345');
|
|
insert into dt(str) values ('2012*.01^011&2345');
|
|
insert into dt(str) values ('2012**01^011&2345');
|
|
insert into dt(str) values ('201201.0112345');
|
|
insert into dt(str) values ('201201%0112345');
|
|
insert into dt(str) values ('201201.01#12345');
|
|
insert into dt(str) values ('201201%01#12345');
|
|
insert into dt(str) values ('201201.01@12!345');
|
|
insert into dt(str) values ('201201%01@12!345');
|
|
insert into dt(str) values ('2012.01%01@12!34:5');
|
|
insert into dt(str) values ('2012;01%01@12!34:5');
|
|
-- bad format with more delimiters include space.
|
|
insert into dt(str) values ('201-2-1 1-12-34');
|
|
insert into dt(str) values ('201-0201 1-12-34');
|
|
insert into dt(str) values ('201. 0201 1-12-34');
|
|
insert into dt(str) values ('201.2 1 1-12 34');
|
|
-- time string.
|
|
insert into dt(str) values ('12:59:59');
|
|
insert into dt(str) values ('123:59:59');
|
|
insert into dt(str) values ('1234:59:59');
|
|
insert into dt(str) values ('12345:59:59');
|
|
insert into dt(str) values ('123456:59:59');
|
|
insert into dt(str) values ('1234567:59:59');
|
|
insert into dt(str) values ('12345678:59:59');
|
|
insert into dt(str) values ('123456789:59:59');
|
|
insert into dt(str) values ('1234567890:59:59');
|
|
insert into dt(str) values ('1011131314151617');
|
|
insert into dt(str) values ('1011123214151617');
|
|
insert into dt(str) values ('10.55.55');
|
|
insert into dt(str) values ('101.55.55');
|
|
insert into dt(str) values ('1011.55.55');
|
|
insert into dt(str) values ('10111.55.55');
|
|
insert into dt(str) values ('101112.55.55');
|
|
insert into dt(str) values ('1011121.55.55');
|
|
insert into dt(str) values ('10111213.55.55');
|
|
insert into dt(str) values ('101112131.55.55');
|
|
insert into dt(str) values ('1011121314.55.55');
|
|
insert into dt(str) values ('10111213141.55.55');
|
|
insert into dt(str) values ('101112131415.22.22');
|
|
insert into dt(str) values ('101112131415.55.55');
|
|
insert into dt(str) values ('1011121314151.55.55');
|
|
insert into dt(str) values ('10111213141516.55.55');
|
|
insert into dt(str) values ('101112131415161.55.55');
|
|
insert into dt(str) values ('1011121314151617.55.55');
|
|
insert into dt(str) values ('10111213141516171.55.55');
|
|
insert into dt(str) values ('101112131415161718.55.55');
|
|
insert into dt(str) values ('1');
|
|
insert into dt(str) values ('12');
|
|
insert into dt(str) values ('123');
|
|
insert into dt(str) values ('1234');
|
|
insert into dt(str) values ('12345');
|
|
insert into dt(str) values ('123456');
|
|
insert into dt(str) values ('1123456');
|
|
insert into dt(str) values ('12+3456');
|
|
insert into dt(str) values ('12:3456');
|
|
insert into dt(str) values ('1234=56');
|
|
insert into dt(str) values ('1234:56');
|
|
insert into dt(str) values ('12!34@56');
|
|
insert into dt(str) values ('12:34@56');
|
|
insert into dt(str) values ('12!34:56');
|
|
insert into dt(str) values ('12:34:56');
|
|
insert into dt(str) values ('12:34::56');
|
|
insert into dt(str) values ('12:34:=56');
|
|
insert into dt(str) values ('12:34+:56');
|
|
insert into dt(str) values ('12:34: 56');
|
|
insert into dt(str) values ('12:34 :56');
|
|
insert into dt(str) values ('12:34:56..789');
|
|
insert into dt(str) values ('12:34:56:.789');
|
|
insert into dt(str) values ('12:34:56.:789');
|
|
insert into dt(str) values ('12:34:56 .789');
|
|
insert into dt(str) values ('12:34:56. 789');
|
|
insert into dt(str) values ('12:34.789');
|
|
insert into dt(str) values ('12:34:61.789');
|
|
insert into dt(str) values ('11 12:34:56.789');
|
|
|
|
insert into dt(str) values ('200 : 59 : 59');
|
|
insert into dt(str) values ('200 :59 :59');
|
|
insert into dt(str) values ('200: 59: 59');
|
|
-- these case is too strange to compatible, give up temporarily.
|
|
insert into dt(str) values ('11: 12:34:56.789');
|
|
insert into dt(str) values ('11. 12:34:56.789');
|
|
insert into dt(str) values ('11 :12:34:56.789');
|
|
insert into dt(str) values ('11 .12:34:56.789');
|
|
|
|
insert into dt(str) values ('11 12:3456.789');
|
|
insert into dt(str) values ('11 12+3456.789');
|
|
insert into dt(str) values ('11 1234:56.789');
|
|
insert into dt(str) values ('11 1234=56.789');
|
|
insert into dt(str) values ('11 1234.789');
|
|
insert into dt(str) values ('11 12:34.789');
|
|
insert into dt(str) values ('11 12.789');
|
|
insert into dt(str) values ('11 12 .789');
|
|
insert into dt(str) values ('11 12. 789');
|
|
-- some critical case.
|
|
insert into dt(str) values ('1000-01-01 00:00:00');
|
|
insert into dt(str) values ('1969-12-31 23:59:59');
|
|
insert into dt(str) values ('1970-01-01 00:00:00');
|
|
insert into dt(str) values ('9999-12-31 23:59:59');
|
|
insert into dt(str) values ('838:59:59');
|
|
insert into dt(str) values ('838:59:59.000001');
|
|
insert into dt(str) values ('840:00:00');
|
|
--
|
|
-- generate datetime, date, time.
|
|
update dt set dt_val = str;
|
|
update dt set d_val = str;
|
|
update dt set t_val = str;
|
|
select str, dt_val, d_val, t_val from dt order by id;
|
|
update dt set dt_val = null where dt_val = '0000-00-00 00:00:00.000000';
|
|
update dt set d_val = null where d_val = '0000-00-00';
|
|
update dt set t_val = null where t_val = '00:00:00.000000';
|
|
select str, dt_val, d_val, t_val from dt order by id;
|
|
--
|
|
-- generate datetime useconds, date days, time useconds.
|
|
update dt set dt_useconds = unix_timestamp(dt_val);
|
|
update dt set d_days = datediff(d_val, '1970-1-1');
|
|
update dt set t_useconds = time_to_sec(t_val);
|
|
--
|
|
-- generate str_to_ob_time (datetime) unittest.
|
|
update dt set pre = "STR_TO_OB_TIME_FAIL(\"",
|
|
suf = "\", DT_TYPE_DATETIME);"
|
|
where dt_val is null;
|
|
update dt set pre = "STR_TO_OB_TIME_SUCC(\"",
|
|
suf = concat("\", DT_TYPE_DATETIME, ",
|
|
year(dt_val), ", ",
|
|
month(dt_val), ", ",
|
|
day(dt_val), ", ",
|
|
hour(dt_val), ", ",
|
|
minute(dt_val), ", ",
|
|
second(dt_val), ", ",
|
|
microsecond(dt_val), ");")
|
|
where dt_val is not null;
|
|
select str, dt_val from dt order by id;
|
|
select concat(pre, str, suf) from dt order by id;
|
|
--
|
|
-- generate str_to_ob_time (date) unittest.
|
|
update dt set pre = "STR_TO_OB_TIME_FAIL(\"",
|
|
suf = "\", DT_TYPE_DATE);"
|
|
where d_val is null;
|
|
update dt set pre = "STR_TO_OB_TIME_SUCC(\"",
|
|
suf = concat("\", DT_TYPE_DATE, ",
|
|
year(d_val), ", ",
|
|
month(d_val), ", ",
|
|
day(d_val), ", -1, -1, -1, -1);")
|
|
where d_val is not null;
|
|
select str, d_val from dt order by id;
|
|
select concat(pre, str, suf) from dt order by id;
|
|
--
|
|
-- generate str_to_ob_time (time) unittest.
|
|
update dt set pre = "STR_TO_OB_TIME_FAIL(\"",
|
|
suf = "\", DT_TYPE_TIME);"
|
|
where t_val is null;
|
|
update dt set pre = "STR_TO_OB_TIME_SUCC(\"",
|
|
suf = concat("\", DT_TYPE_TIME, -1, -1, -1, ",
|
|
hour(t_val), ", ",
|
|
minute(t_val), ", ",
|
|
second(t_val), ", ",
|
|
microsecond(t_val), ");")
|
|
where t_val is not null and t_val != '838:59:59.000000';
|
|
update dt set pre = "STR_TO_OB_TIME_SUCC(\"",
|
|
suf = "\", DT_TYPE_TIME, -1, -1, -1, 839, -1, -1, -1);"
|
|
where t_val is not null and t_val = '838:59:59.000000';
|
|
select str, t_val from dt order by id;
|
|
select concat(pre, str, suf) from dt order by id;
|
|
|
|
|
|
drop table dt;
|
|
create table dt(id int primary key auto_increment, pre varchar(100), dec_val decimal(30, 8), int_val bigint unsigned, dbl_val double, suf varchar(100),
|
|
dt_val datetime(6), d_val date, t_val time(6),
|
|
dt_useconds bigint, d_days int, t_useconds bigint);
|
|
set sql_mode = '';
|
|
-- decimal value.
|
|
insert into dt(dec_val) values (22.5555555);
|
|
insert into dt(dec_val) values (212.5555555);
|
|
insert into dt(dec_val) values (2112.5555555);
|
|
insert into dt(dec_val) values (21112.5555555);
|
|
insert into dt(dec_val) values (211112.5555555);
|
|
insert into dt(dec_val) values (2111112.5555555);
|
|
insert into dt(dec_val) values (21111112.5555555);
|
|
insert into dt(dec_val) values (211111112.5555555);
|
|
insert into dt(dec_val) values (2111111112.5555555);
|
|
insert into dt(dec_val) values (21111111112.5555555);
|
|
insert into dt(dec_val) values (211111111112.5555555);
|
|
insert into dt(dec_val) values (2111111111112.5555555);
|
|
insert into dt(dec_val) values (21111111111112.5555555);
|
|
insert into dt(dec_val) values (211111111111112.5555555);
|
|
insert into dt(dec_val) values (2111111111111112.5555555);
|
|
insert into dt(dec_val) values (21111111111111112.5555555);
|
|
insert into dt(dec_val) values (211111111111111112.5555555);
|
|
insert into dt(dec_val) values (9223372036854775807.5555555);
|
|
insert into dt(dec_val) values (18446744073709551615.5555555);
|
|
insert into dt(dec_val) values (10.2222222);
|
|
insert into dt(dec_val) values (101.2222222);
|
|
insert into dt(dec_val) values (1011.2222222);
|
|
insert into dt(dec_val) values (10111.2222222);
|
|
insert into dt(dec_val) values (101112.2222222);
|
|
insert into dt(dec_val) values (1011121.2222222);
|
|
insert into dt(dec_val) values (10111213.2222222);
|
|
insert into dt(dec_val) values (101112131.2222222);
|
|
insert into dt(dec_val) values (1011121314.2222222);
|
|
insert into dt(dec_val) values (10111213141.2222222);
|
|
insert into dt(dec_val) values (101112131415.2222222);
|
|
insert into dt(dec_val) values (1011121314151.2222222);
|
|
insert into dt(dec_val) values (10111213141516.2222222);
|
|
insert into dt(dec_val) values (101112131415161.2222222);
|
|
insert into dt(dec_val) values (1011121314151617.2222222);
|
|
insert into dt(dec_val) values (10111213141516171.2222222);
|
|
insert into dt(dec_val) values (101112131415161718.2222222);
|
|
insert into dt(dec_val) values (9223372036854775807.2222222);
|
|
insert into dt(dec_val) values (18446744073709551615.2222222);
|
|
--
|
|
-- generate int value and double value.
|
|
update dt set int_val = dec_val, dbl_val = dec_val;
|
|
--
|
|
-- generate datetime, date, time from dec_val.
|
|
update dt set dt_val = dec_val;
|
|
update dt set d_val = dec_val;
|
|
update dt set t_val = dec_val;
|
|
select dec_val, dt_val, d_val, t_val from dt order by id;
|
|
update dt set dt_val = null where dt_val = '0000-00-00 00:00:00.000000';
|
|
update dt set d_val = null where d_val = '0000-00-00';
|
|
--update dt set t_val = null where t_val = '838:59:59.000000';
|
|
select dec_val, dt_val, d_val, t_val from dt order by id;
|
|
--
|
|
-- generate datetime useconds, date days, time useconds from dec_val.
|
|
update dt set dt_useconds = unix_timestamp(dt_val);
|
|
update dt set d_days = datediff(d_val, '1970-1-1');
|
|
update dt set t_useconds = time_to_sec(t_val);
|
|
--
|
|
-- generate datetime, date, time from int_val.
|
|
update dt set dt_val = int_val;
|
|
update dt set d_val = int_val;
|
|
update dt set t_val = int_val;
|
|
select int_val, dt_val, d_val, t_val from dt order by id;
|
|
update dt set dt_val = null where dt_val = '0000-00-00 00:00:00.000000';
|
|
update dt set d_val = null where d_val = '0000-00-00';
|
|
select int_val, dt_val, d_val, t_val from dt order by id;
|
|
--
|
|
-- generate datetime useconds, date days, time useconds from int_val.
|
|
update dt set dt_useconds = unix_timestamp(dt_val);
|
|
update dt set d_days = datediff(d_val, '1970-1-1');
|
|
update dt set t_useconds = time_to_sec(t_val);
|
|
--
|
|
-- generate int_to_ob_time (datetime) unittest.
|
|
update dt set pre = "INT_TO_OB_TIME_FAIL(",
|
|
suf = ", DT_TYPE_DATETIME);"
|
|
where dt_val is null;
|
|
update dt set pre = "INT_TO_OB_TIME_SUCC(",
|
|
suf = concat(", DT_TYPE_DATETIME, ",
|
|
year(dt_val), ", ",
|
|
month(dt_val), ", ",
|
|
day(dt_val), ", ",
|
|
hour(dt_val), ", ",
|
|
minute(dt_val), ", ",
|
|
second(dt_val), ", ",
|
|
microsecond(dt_val), ");")
|
|
where dt_val is not null;
|
|
select int_val, dt_val from dt order by id;
|
|
select concat(pre, int_val, suf) from dt order by id;
|
|
--
|
|
-- generate int_to_ob_time (date) unittest.
|
|
update dt set pre = "INT_TO_OB_TIME_FAIL(",
|
|
suf = ", DT_TYPE_DATE);"
|
|
where d_val is null;
|
|
update dt set pre = "INT_TO_OB_TIME_SUCC(",
|
|
suf = concat(", DT_TYPE_DATE, ",
|
|
year(d_val), ", ",
|
|
month(d_val), ", ",
|
|
day(d_val), ", -1, -1, -1, -1);")
|
|
where d_val is not null;
|
|
select int_val, d_val from dt order by id;
|
|
select concat(pre, int_val, suf) from dt order by id;
|
|
--
|
|
-- generate int_to_ob_time (time) unittest.
|
|
update dt set pre = "INT_TO_OB_TIME_FAIL(",
|
|
suf = ", DT_TYPE_TIME);"
|
|
where t_val is null;
|
|
update dt set pre = "INT_TO_OB_TIME_SUCC(",
|
|
suf = concat(", DT_TYPE_TIME, -1, -1, -1, ",
|
|
hour(t_val), ", ",
|
|
minute(t_val), ", ",
|
|
second(t_val), ", ",
|
|
microsecond(t_val), ");")
|
|
where t_val is not null and t_val != '838:59:59.000000';
|
|
update dt set pre = "INT_TO_OB_TIME_SUCC(",
|
|
suf = ", DT_TYPE_TIME, -1, -1, -1, 839, -1, -1, -1);"
|
|
where t_val is not null and t_val = '838:59:59.000000';
|
|
select int_val, t_val from dt order by id;
|
|
select concat(pre, int_val, suf) from dt order by id;
|
|
--
|
|
-- generate datetime, date, time from dbl_val.
|
|
update dt set dt_val = dbl_val;
|
|
update dt set d_val = dbl_val;
|
|
update dt set t_val = dbl_val;
|
|
select dbl_val, dt_val, d_val, t_val from dt order by id;
|
|
update dt set dt_val = null where dt_val = '0000-00-00 00:00:00.000000';
|
|
update dt set d_val = null where d_val = '0000-00-00';
|
|
--update dt set t_val = null where t_val = '838:59:59.000000';
|
|
--
|
|
-- generate datetime useconds, date days, time useconds from dbl_val.
|
|
update dt set dt_useconds = unix_timestamp(dt_val);
|
|
update dt set d_days = datediff(d_val, '1970-1-1');
|
|
update dt set t_useconds = time_to_sec(t_val);
|
|
|
|
|
|
drop table dt; create table dt(d_val date);
|
|
drop table md; create table md (m_val int);
|
|
insert into dt values
|
|
(10000101), (10000103), (10000105), (10000107), (10001231),
|
|
(15000101), (15000103), (15000105), (15000107), (15001231),
|
|
(20000101), (20000103), (20000105), (20000107), (20001231);
|
|
insert into md values (0), (1), (2), (3), (4), (5), (6), (7);
|
|
select d_val, m_val, week(d_val, m_val) from dt, md order by d_val, m_val;
|
|
select concat('int_to_week_succ(', cast(d_val as unsigned), ', ', m_val, ', ', week(d_val, m_val), ', __LINE__);') from dt, md order by d_val, m_val;
|