【发布时间】:2013-12-19 20:15:54
【问题描述】:
我正在尝试使用 mysql 中的 str_to_date 函数将 TEXT 字段转换为日期。正在运行:
mysql> select Date from sampleData limit 2;
+--------------+
| Date |
+--------------+
| "25-01-2012" |
| "25-01-2012" |
+--------------+
表明我们确实有文本。只是为了验证这是描述表的输出:
mysql> describe sampleData;
+--------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------+------+-----+---------+-------+
| Colors | tinyint(4) | YES | | NULL | |
| Date | text | NO | | NULL | |
+--------------------+------------+------+-----+---------+-------+
当我尝试将其转换为日期时,现在是有趣的部分:
mysql> select str_to_date(Date, '%d-%m-%Y') from sampleData limit 2;
+-------------------------------+
| str_to_date(Date, '%d-%m-%Y') |
+-------------------------------+
| NULL |
| NULL |
+-------------------------------+
哦,但是 str_to_date 只适用于字符类型,而不适用于 TEXT 我认为所以我做了一个产生相同结果的演员表。我做错了什么?
更新:回应评论
mysql> select AdId, str_to_date(Date, "%d-%m-%Y") from sampleData limit 2;
+----------+-------------------------------+
| AdId | str_to_date(Date, "%d-%m-%Y") |
+----------+-------------------------------+
| 84065013 | NULL |
| 84206047 | NULL |
+----------+-------------------------------+
和
mysql> select AdId, Date from sampleData limit 2;
+----------+--------------+
| AdId | Date |
+----------+--------------+
| 84065013 | "25-01-2012" |
| 84206047 | "25-01-2012" |
+----------+--------------+
这表明正在处理的是相同的行 (ID)。
【问题讨论】:
-
您没有订购您的数据。你确定这两条记录是一样的吗?
-
它应该可以工作:sqlfiddle.com/#!2/f5bcc/1
-
@juergend 我现在在输出中添加了唯一 ID,以便我们可以确定我们确实在查看相同的行。