I have a line of code for SQL server which takes a date listed as \"YYYYMMDD\" where the DD is 00 and converts the 00 to 01 so that it works with datetime. I would like to
One possibility, that allows argument to be string, integer or date:
WHERE DAYNAME(dt) IS NOT NULL
These valid dates return 'Tuesday':
SELECT IFNULL(DAYNAME('2016-06-21 18:17:47') , '');
SELECT IFNULL(DAYNAME('2016-06-21') , '');
These invalid dates return '' (empty string):
SELECT IFNULL(DAYNAME('0000-00-00 00:00:00') , '');
SELECT IFNULL(DAYNAME('2016-06-32 18:17:47') , '');
SELECT IFNULL(DAYNAME(NULL) , '');
SELECT IFNULL(DAYNAME(10) , '');
It seems that DAYNAME is 2x faster in mysql 5.6 than STR_TO_DATE:
SELECT benchmark(10000000, DAYNAME('2016-06-21 18:17:47'))
1 row(s) returned 3.215 sec / 0.0000072 sec
SELECT benchmark(10000000, STR_TO_DATE('2016-06-21 18:17:47', '%d,%m,%Y'))
1 row(s) returned 7.905 sec / 0.0000081 sec
And I suppose that if the argument is date (rather than eg. string), the performance is better.