【问题标题】:MySQL str_to_date produces NULL despite valid formatting尽管格式有效,MySQL str_to_date 仍产生 NULL
【发布时间】: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,以便我们可以确定我们确实在查看相同的行。

标签: mysql date text casting


【解决方案1】:

看起来你那里也有那些双引号。当您尝试使用双引号对其进行转换时,您会得到 null。

尝试做:

select str_to_date(REPLACE(Date,'"',''), '%d-%m-%Y') 
from tab1 sampleData 2;

sqlfiddle demo

【讨论】:

  • 是的!而已!有用。我不敢相信我错过了。谢谢。
  • :) 这是最令人沮丧的小事。呵呵。
猜你喜欢
  • 2017-09-28
  • 2015-03-05
  • 1970-01-01
  • 2017-03-16
  • 2017-05-26
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2015-01-07
相关资源
最近更新 更多