嗨,我是一个初学者,我正在尝试使用下面的查询来获取长文本的当天的名称,但是我得到的空d1列为长文本。
d1 = day/mm/yyyy
ex d1 = 01/11/2018
自11月1日(星期四)以来,所需输出为星期四。非常感谢您的任何建议或帮助
SELECT DAYNAME(d1) FROM tbl1
答案 0 :(得分:1)
将日期转换为数据库可以识别的格式:
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 |
+----------------------------------------------------------+