Привет я новичок, я пытаюсь получить название дня длинного текста, используя запрос ниже, но я получаю нулевой столбец d1 является длинным текстом.
d1 = day/mm/yyyy
ex d1 = 01/11/2018
Желаемый выходной - четверг, так как 01 ноября - четверг. Буду очень признателен за любые советы или помощь, спасибо
SELECT DAYNAME(d1) FROM tbl1
Получите дату в формате, который распознает БД:
MariaDB [(none)]> select DAYNAME('2018-01-11');
+-----------------------+
| DAYNAME('2018-01-11') |
+-----------------------+
| Thursday |
+-----------------------+
Из вашего длинного текста вы могли бы даже сделать это:
MariaDB [(none)]> select DAYNAME(DATE_FORMAT(STR_TO_DATE('01/11/2018', '%d/%m/%Y'), '%Y-%m-%d'));
+-------------------------------------------------------------------------+
| DAYNAME(DATE_FORMAT(STR_TO_DATE('01/11/2018', '%d/%m/%Y'), '%Y-%m-%d')) |
+-------------------------------------------------------------------------+
| Thursday |
+-------------------------------------------------------------------------+
Замените часть с косой датой в столбце d1:
select DAYNAME(DATE_FORMAT(STR_TO_DATE(d1, '%d/%m/%Y'), '%Y-%m-%d'));
... должно также работать, предполагая, что столбец d1
.
=====
На основе предложенного Ника формата вы можете отказаться от использования DAYNAME
:
MariaDB [(none)]> select DATE_FORMAT(STR_TO_DATE('01/11/2018', '%d/%m/%Y'), '%W');
+----------------------------------------------------------+
| DATE_FORMAT(STR_TO_DATE('01/11/2018', '%d/%m/%Y'), '%W') |
+----------------------------------------------------------+
| Thursday |
+----------------------------------------------------------+
DAYNAME(DATE_FORMAT(..., '%Y-%m-%d'))
просто используйте DATE_FORMAT(..., '%W')