検索
ホームページデータベースmysql チュートリアルMySQL日期字符串转换成NULL值的异常处理_MySQL

1,YYYYmmdd格式日期转换为null

看如下记录,一个能取到值,一个取不到值**
mysql> SELECT DATE_FORMAT(STR_TO_DATE(‘20150922 13:01:01’, ‘%Y%m%d %H:%m:%s’),’%H:%m’);
+————————————————————————–+
| DATE_FORMAT(STR_TO_DATE(‘20150922 13:01:01’, ‘%Y%m%d %H:%m:%s’),’%H:%m’) |
+————————————————————————–+
| 13:01 |
+————————————————————————–+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT(STR_TO_DATE(‘20150922 12:55:00’, ‘%Y%m%d %H:%m:%s’),’%H:%m’);
+————————————————————————–+
| DATE_FORMAT(STR_TO_DATE(‘20150922 12:55:00’, ‘%Y%m%d %H:%m:%s’),’%H:%m’) |
+————————————————————————–+
| NULL |
+————————————————————————–+
1 row in set, 1 warning (0.00 sec)

mysql>

2,查看报错信息:

mysql> show warnings;
+———+——+————————————————————————+
| Level | Code | Message |
+———+——+————————————————————————+
| Warning | 1411 | Incorrect datetime value: ‘20150922 12:55:00’ for function str_to_date |
+———+——+————————————————————————+
1 row in set (0.00 sec)

mysql>
报警说是Incorrect datetime value: ‘20150922 12:55:00’ for function str_to_date,不正确的日期格式,所以换成比较规范的日期格式

原blog地址:http://blog.csdn.net/mchdba/article/details/48719765,未经过csdn原博客博主mchdba允许,不能转载。

3,换成规范的%Y-%m-%d %H:%i:%s试试

mysql> select DATE_FORMAT(str_to_date(‘2015-09-22 13:00:01’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’);
+——————————————————————————+
| DATE_FORMAT(str_to_date(‘2015-09-22 13:00:01’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’) |
+——————————————————————————+
| 13:00 |
+——————————————————————————+
1 row in set (0.00 sec)

mysql> select DATE_FORMAT(str_to_date(‘2015-09-22 12:55:00’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’);
+——————————————————————————+
| DATE_FORMAT(str_to_date(‘2015-09-22 12:55:00’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’) |
+——————————————————————————+
| 12:55 |
+——————————————————————————+
1 row in set (0.00 sec)

mysql>

看到在规范的格式下,日期从字符串转换到日期格式,然后截取时分都是能取到值的。

参考官网地址:http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_str-to-date

4,再次确定缩小范围,是%h的问题,将时换成大写就搞定了

再看到一个案例,将格式变成2015-09-22 13:00:01表准备格式,可以仍然取不到时分值,如下所示:

<code class="hljs asciidoc">mysql> select DATE_FORMAT(str_to_date(&#39;2015-09-22 13:00:01&#39;, &#39;%Y-%m-%d %h:%i:%s&#39;),&#39;%h:%i&#39;);
+------------------------------------------------------------------------------+
| DATE_FORMAT(str_to_date(&#39;2015-09-22 13:00:01&#39;, &#39;%Y-%m-%d %h:%i:%s&#39;),&#39;%h:%i&#39;) |
+------------------------------------------------------------------------------+
| NULL                                                                         |
+------------------------------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> select DATE_FORMAT(str_to_date(&#39;2015-09-22 12:55:00&#39;, &#39;%Y-%m-%d %h:%i:%s&#39;),&#39;%h:%i&#39;);
+------------------------------------------------------------------------------+
| DATE_FORMAT(str_to_date(&#39;2015-09-22 12:55:00&#39;, &#39;%Y-%m-%d %h:%i:%s&#39;),&#39;%h:%i&#39;) |
+------------------------------------------------------------------------------+
| 12:55                                                                        |
+------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> </code>

那么问题在哪里呢?只能再次去官网找答案,找到http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_get-format<br> 看到终极标准格式为:’%Y-%m-%d %H.%i.%s’,换成这个试试,看到范例中的差异在哪里了吗?就在于%H和%h的区别啊,如下所示:

<code class="hljs asciidoc"><code class="hljs asciidoc">mysql> select DATE_FORMAT(str_to_date(&#39;20150922 13:00:01&#39;, &#39;%Y%m%d %h:%i:%s&#39;),&#39;%h:%i&#39;);
+--------------------------------------------------------------------------+
| DATE_FORMAT(str_to_date(&#39;20150922 13:00:01&#39;, &#39;%Y%m%d %h:%i:%s&#39;),&#39;%h:%i&#39;) |
+--------------------------------------------------------------------------+
| NULL                                                                     |
+--------------------------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> select DATE_FORMAT(str_to_date(&#39;20150922 12:55:00&#39;, &#39;%Y%m%d %h:%i:%s&#39;),&#39;%h:%i&#39;);
+--------------------------------------------------------------------------+
| DATE_FORMAT(str_to_date(&#39;20150922 12:55:00&#39;, &#39;%Y%m%d %h:%i:%s&#39;),&#39;%h:%i&#39;) |
+--------------------------------------------------------------------------+
| 12:55                                                                    |
+--------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> </code></code>

<code class="hljs asciidoc"><strong>然后标准的日期格式为:%Y%m%d %H:%i:%s’或者%Y-%m-%d %H:%i:%s’ 都可以的,如下所示:</strong>

<code class="hljs asciidoc">select DATE_FORMAT(str_to_date(‘20150922 13:00:01’, ‘%Y%m%d %H:%i:%s’),’%H:%i’);<br> select DATE_FORMAT(str_to_date(‘20150922 12:55:00’, ‘%Y%m%d %H:%i:%s’),’%H:%i’);

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php怎么将16进制字符串转为数字php怎么将16进制字符串转为数字Oct 26, 2021 pm 06:36 PM

php将16进制字符串转为数字的方法:1、使用hexdec()函数,语法“hexdec(十六进制字符串)”;2、使用base_convert()函数,语法“bindec(十六进制字符串, 16, 10)”。

php怎么将字符串转换成小数php怎么将字符串转换成小数Mar 22, 2023 pm 03:22 PM

PHP 是一门功能强大的编程语言,广泛应用于 Web 开发领域。其中一个非常常见的情况是需要将字符串转换为小数。这在进行数据处理的时候非常有用。在本文中,我们将介绍如何在 PHP 中将字符串转换为小数。

golang怎么检测变量是否为字符串golang怎么检测变量是否为字符串Jan 06, 2023 pm 12:41 PM

检测变量是否为字符串的方法:1、利用​“%T”格式化标识,语法“fmt.Printf("variable count=%v is of type %T \n", count, count)”;2、利用reflect.TypeOf(),语法“reflect.TypeOf(变量)”;3、利用reflect.ValueOf().Kind()检测;4、使用类型断言,可以对类型进行分组。

php 字符串长度不一致怎么办php 字符串长度不一致怎么办Feb 07, 2023 am 09:58 AM

php字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);”剔除非中文字符即可。

go语言怎么删除字符串中的空格go语言怎么删除字符串中的空格Jan 17, 2023 pm 02:31 PM

删除方法:1、使用TrimSpace()函数去除字符串左右两边的空格,语法“strings.TrimSpace(str)”;2、使用Trim()函数去除字符串左右两边的空格,语法“strings.Trim(str, " ")”;3、使用Replace()函数去除字符串的全部空格,语法“strings.Replace(str, " ", "", -1)”。

php字符串函数学习:怎么去掉前面的字符php字符串函数学习:怎么去掉前面的字符Mar 20, 2023 pm 02:33 PM

在开发PHP应用程序时,有时我们需要去掉字符串前面的某些特定字符或者字符串。在这种情况下,我们需要使用一些PHP函数来实现这一目标。本文将介绍一些PHP函数,帮助您轻松地去掉字符串前面的字符或字符串。

php怎么将字符串转为布尔类型php怎么将字符串转为布尔类型Jul 01, 2021 pm 06:36 PM

转换方法:1、在转换变量前加上用括号括起来的目标类型“(bool)”或“(boolean)”;2、用boolval()函数,语法“boolval(字符串)”;3、用settype()函数,语法“settype(变量,"boolean")”。

php字符串部分乱码怎么办php字符串部分乱码怎么办Jan 20, 2023 am 10:18 AM

php字符串部分乱码的解决办法:1、使用“mb_substr(strip_tags($str),0,-1,'UTF-8');”截取字符串;2、使用“iconv("UTF-8","GB2312//IGNORE",$data)”转换字符集即可。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール