@@ -4830,6 +4830,47 @@ SELECT * FROM cte WHERE d = 2;`,
4830
4830
Query : "SELECT subdate(da, f32/10) from typestable;" ,
4831
4831
Expected : []sql.Row {{time .Date (2019 , time .December , 30 , 0 , 0 , 0 , 0 , time .UTC )}},
4832
4832
},
4833
+ {
4834
+ Query : "SELECT date_add('4444-01-01', INTERVAL 5400000 DAY);" ,
4835
+ Expected : []sql.Row {{nil }},
4836
+ },
4837
+ {
4838
+ Query : "SELECT date_add('4444-01-01', INTERVAL -5300000 DAY);" ,
4839
+ Expected : []sql.Row {{nil }},
4840
+ },
4841
+ {
4842
+ Query : "SELECT subdate('2008-01-02', 12e10);" ,
4843
+ Expected : []sql.Row {{nil }},
4844
+ },
4845
+ {
4846
+ Query : "SELECT date_add('2008-01-02', INTERVAL 1000000 day);" ,
4847
+ Expected : []sql.Row {{"4745-11-29" }},
4848
+ },
4849
+ {
4850
+ Query : "SELECT subdate('2008-01-02', INTERVAL 700000 day);" ,
4851
+ Expected : []sql.Row {{"0091-06-20" }},
4852
+ },
4853
+ {
4854
+ Query : "SELECT date_add('0000-01-01:01:00:00', INTERVAL 0 day);" ,
4855
+ // MYSQL uses a proleptic gregorian, however, Go's time package does normal gregorian.
4856
+ Expected : []sql.Row {{"0000-01-01 01:00:00" }},
4857
+ },
4858
+ {
4859
+ Query : "SELECT date_add('9999-12-31:23:59:59.9999994', INTERVAL 0 day);" ,
4860
+ Expected : []sql.Row {{"9999-12-31 23:59:59.999999" }},
4861
+ },
4862
+ {
4863
+ Query : "SELECT date_add('9999-12-31:23:59:59.9999995', INTERVAL 0 day);" ,
4864
+ Expected : []sql.Row {{nil }},
4865
+ },
4866
+ {
4867
+ Query : "SELECT date_add('9999-12-31:23:59:59.99999945', INTERVAL 0 day);" ,
4868
+ Expected : []sql.Row {{"9999-12-31 23:59:59.999999" }},
4869
+ },
4870
+ {
4871
+ Query : "SELECT date_add('9999-12-31:23:59:59.99999944444444444-', INTERVAL 0 day);" ,
4872
+ Expected : []sql.Row {{nil }},
4873
+ },
4833
4874
{
4834
4875
Query : `SELECT * FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM othertable) othertable_one) othertable_two) othertable_three WHERE s2 = 'first'` ,
4835
4876
Expected : []sql.Row {
0 commit comments