mysql - 将带有月份的 varchar 转换为日期

标签 mysql

mysql> select * from tr;
+------+
| mnt  |
+------+
| jun  |
| mar  |
| jan  |
| aug  |
+------+
4 rows in set (0.00 sec)

mysql> select * from tr1;
+------+------+
| mnt  | id   |
+------+------+
| aug  |   11 |
| jan  |   12 |
| mar  |   15 |
| apr  |   16 |
+------+------+
4 rows in set (0.00 sec)

it worked for this query..

mysql> select * from tr join tr1 on tr.mnt=tr1.mnt;
+------+------+------+
| mnt  | mnt  | id   |
+------+------+------+
| aug  | aug  |   11 |
| jan  | jan  |   12 |
| mar  | mar  |   15 |
+------+------+------+
3 rows in set (0.00 sec)

mysql> select * from tr2;
+------------+------+
| mn         | id   |
+------------+------+
| 2009-02-14 |   11 |
| 2009-03-03 |   12 |
| 2009-08-08 |   12 |
+------------+------+
3 rows in set (0.00 sec)

mysql> insert into tr2 values('2009-01-01',14);
Query OK, 1 row affected (0.06 sec)

但它不适用于此..

mysql> select * from tr join tr2 on tr.mnt=MONTHNAME(tr2.mn);
Empty set (0.00 sec)

请给出确切的查询..

最佳答案

MONTHNAME(date) 返回一个 varchar,因此“yes” - 您可以比较它们。

考虑这个语法:

select *
from A
join B on B.InvoiceMonth = MONTHNAME(A.Mnth);

关于mysql - 将带有月份的 varchar 转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301971/

相关文章:

MySQL - 准备好的语句不返回完整查询

php - CodeIgniter - Group by with order by 不按预期工作

php - 使用php将日期从数据库格式化为表

mysql - 如何将一列数据显示为固定值,而另一列正常显示,两列来自同一列数据?数据库

mysql - 按子串分组

mysql - SQL查询列出数据库中所有表的内容

mysql - 如何只取最后一笔交易来计算 timediff mysql 5.7

php - 为没有 PHP 的数据库生成 PHP 密码

mysql - postgresql Rails 价格范围过滤器之间

MySQL - 在多次插入时使用最后插入的 ID