- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
专家们,我快疯了...str_to_date 不起作用
mysql> describe product_tbl;
+--------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+----------------+
| product_id | int(11) | NO | PRI | NULL | auto_increment |
| ... | ... | ... | ... | ... | ... |
| expiration_date | text | YES | | NULL | |
+--------------------+-------------+------+-----+---------+----------------+
日期格式为日 01-31 - 月 01-12 - 年 4 位数字
mysql> select expiration_date from product_tbl limit 2;
+-----------------+
| expiration_date |
+-----------------+
| 26-09-2017 |
| 19-09-2017 |
+-----------------+
2 rows in set (0.00 sec)
根据 dev.mysql.com 的文档:
%d -> 一月中的某一天,数字 (00..31)
%m -> 月份,数字 (00..12)
%Y -> 年份,数字,四位数字
但是...
mysql> select STR_TO_DATE(expiration_date, '%d-%m-%Y') from product_tbl limit 2;
+------------------------------------------+
| STR_TO_DATE(expiration_date, '%d-%m-%Y') |
+------------------------------------------+
| NULL |
| NULL |
+------------------------------------------+
2 rows in set, 2 warnings (0.00 sec)
我做错了什么?感谢帮助!
<小时/>回答您的问题:
无限制:
mysql> select expiration_date, STR_TO_DATE(expiration_date, '%d-%m-%Y') from product_tbl;
+-----------------+------------------------------------------+
| expiration_date | STR_TO_DATE(expiration_date, '%d-%m-%Y') |
+-----------------+------------------------------------------+
| 26-09-2017 | NULL |
| 19-09-2017 | NULL |
| 20-09-2017 | NULL |
| 19-09-2017 | NULL |
| 19-09-2017 | NULL |
| 19-09-2017 | NULL |
| 19-09-2017 | NULL |
| 19-09-2017 | NULL |
| 19-09-2017 | NULL |
| 19-09-2017 | NULL |
| ... | ... |
依此类推,直到表格末尾。
另外,
mysql> SELECT STR_TO_DATE(expiration_date, '%d-%m-%Y')
-> FROM product_tbl
-> WHERE expiration_date IS NOT NULL
-> LIMIT 2;
+------------------------------------------+
| STR_TO_DATE(expiration_date, '%d-%m-%Y') |
+------------------------------------------+
| NULL |
| NULL |
+------------------------------------------+
2 rows in set, 2 warnings (0.01 sec)
和
mysql> SELECT STR_TO_DATE(expiration_date, '%d-%m-%Y')
-> FROM product_tbl
-> ORDER BY expiration_date DESC
-> LIMIT 2;
+------------------------------------------+
| STR_TO_DATE(expiration_date, '%d-%m-%Y') |
+------------------------------------------+
| NULL |
| NULL |
+------------------------------------------+
2 rows in set, 2 warnings (0.00 sec)
顺便说一下,服务器版本是 5.6.37 MySQL Community Server (GPL)
<小时/>编辑:
mysql> select expiration_date, CAST(expiration_date AS DATE), STR_TO_DATE(expiration_date, '%d-%m-%Y') from product_tbl;
+-----------------+-------------------------------+------------------------------------------+
| expiration_date | CAST(expiration_date AS DATE) | STR_TO_DATE(expiration_date, '%d-%m-%Y') |
+-----------------+-------------------------------+------------------------------------------+
| 26-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
| 23-09-2017 | NULL | NULL |
| 28-09-2017 | NULL | NULL |
| 27-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
| 21-09-2017 | NULL | NULL |
我怀疑我的数据库安装有问题,因为在另一台运行 MariaDB 5.5.52 的服务器上正确返回了日期。
我尝试卸载并重新安装 MySQL 服务器,但结果相同。我现在要更改存储库并安装不同的版本。
我会随时通知您。不管怎样,感谢您的支持。
<小时/>编辑:
只是想让您知道,我删除了 MySQL Community Server 5.6.37 并安装了 MariaDB 10.1.26。现在它就像一个魅力。不确定这是否是 MySQL 的错误,但至少问题解决了。
最佳答案
正如 Strawberry 所提到的,您可能会得到带有 NULL 值的随机记录
LIMIT without ORDER BY is fairly meaningless
您可以使用这些查询检查是否有记录。
SELECT STR_TO_DATE(expiration_date, '%d-%m-%Y')
FROM product_tbl
WHERE expiration_date IS NOT NULL
LIMIT 2;
或者
SELECT STR_TO_DATE(expiration_date, '%d-%m-%Y')
FROM product_tbl
ORDER BY expiration_date DESC
LIMIT 2;
关于mysql - str_to_date 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332197/
我在尝试将日期列的格式从如下所示:05-JUN-15 转换为标准 MYSQL 格式时遇到问题。我尝试做的是: UPDATE sp_building_headcount set `ATTENDA
我在使用 STR_TO_DATE 函数的两个不同 Docker 镜像中遇到了不一致的行为。在一个 ubuntu 机器上运行,另一个在我的 Mac 上运行。 在 Linux 上: SELECT STR_
这是怎么回事? str_to_date('26/04/2011 00:00:00', '%d/%m/%Y')它给出 Error Code: 1292 Truncated incorrect date
我有一个名为 ReleaseDate 的列(它是一个字符串)。它们中的大多数采用 %e %M %Y(1979 年 5 月 25 日)的形式,但也有一些只是 %M %Y(1979 年 5 月) ) 或
我正在尝试运行一个函数来返回两个日期之间的天数差。出于这个原因,我根据日期参数获取两个日期(这工作正常)。接下来,如果在表中找不到日期,我将使用参数 date pdate 来构造日期。这种日期结构没有
str_to_date 和 concat 联合函数与时间和日期。我不知道如何在访问时将格式更改为导入或之后或直接填充。 CREATE trigger `trigger` before insert
以下内容从我的数据库返回一堆行: USE test; SELECT * FROM aaaa WHERE dddd BETWEEN (NOW() - INTERVAL 42 DAY) AND (NOW(
我正在使用应用程序日志中的时间戳,格式为“Apr 28 09:54:46”,这是下面 NEW.timestamp 中的值的格式。在按以下方式插入之前尝试使用触发器进行解析。 CREATE DEFINE
我正在尝试使用 STR_TO_DATE() 函数插入日期。由于某种原因它一直失败。有人可以帮忙吗?谢谢 HTML: Total Sales : Company Name : Sales T
这很奇怪,但我不明白到底发生了什么。我只是想通过计算两个日期之间的差异来更新我的列值。我有两列,其日期为 column_45 和 column_14,这两列的日期格式均为 4/8/2011 和 4/8
专家们,我快疯了...str_to_date 不起作用 mysql> describe product_tbl; +--------------------+-------------+------+
问候 Stackian Overflowers, 我正在尝试覆盖现有列中的数据,并在已设置的情况下执行 STR_TO_DATE。 代码如下: SELECT IF(columnA = '../../..
我想将 MySQL 字符串转换为所需的日期格式。 我的文件中有以下几行。 30-06-2017,clarke 31-07-2018,warner 我的表格有 2 列。 Column1 datatype
如果我在 MySQL 中使用这个命令: SELECT node.nid AS nid, users.uid AS users_uid, node.created AS node_created FRO
我的数据库中有一个 varchar 类型的 datecreated 字段。不幸的是,我无法将此字段更改为日期格式,因此我必须在选择数据时执行此操作。我试图根据日期对记录进行排序(以便显示最近的年、月、
我需要使用 STR_TO_DATE 将日期时间插入到 mysql 表中,但下面的命令给出的日期时间列始终为 NULL。 insert into DETECTED values(NULL,STR_TO
我正在尝试使用 STR_TO_DATE 函数格式化包含时间值的字符串。时间值为:不带前导零的小时(0-23) + 分钟(00-59)例如800、1245 或 1535。为了格式化这些值,我尝试使用 %
我在使用以下代码时遇到问题: INSERT into `fun` ( funner) SELECT YEAR(STR_TO_DATE(SUBSTRING(time,1,4), '%Y')) FROM
我的 MySQL(版本 5.7.25)数据库有一列,其中充满了 varchar(100) 日期,例如 Fri May 04 08:08:42 UTC 2018.我需要将它们转换为日期。 到目前为止我已
我正在尝试执行一些计算并使用 SQL 查询使用计算值更新表。使用的查询如下: UPDATE `table1` pv inner join (SELECT Email,IF(`DS Start
我是一名优秀的程序员,十分优秀!