如何在 MySQL insert 语句中正确使用 str_to_date 的多个实例?
How do you correctly use multiple instances of str_to_date with MySQL insert statement?
我正在尝试将 2 个英国格式 (dd/mm/yyyy) 的日期插入 MySQL 美国日期格式的 MySQL 数据库。
我正在使用 str_to_date。 str_to_date 的第一个实例按预期工作,但第二个实例始终插入与 str_to_date 的第一个实例相同的日期,即使原始日期不同。
$date_1 = "10/01/2016";
$date_2 = "16/02/2016";
$sql = "INSERT INTO customers (date_1, date_2)
VALUES (STR_TO_DATE( '$date_1', '%m/%d/%Y %h:%i' ), STR_TO_DATE( '$date_2', '%m/%d/%Y %h:%i' ))";
在 MySQL 插入语句中处理多个 str_to_date 实例的正确方法是什么?
谢谢
str_to_date()
的格式字符串告诉 MySQL 第一个参数的日期值的格式。它不是如何格式化进入 mysql 的值(例如目的地)格式。 str_to_date 的输出始终是原生 mysql date/time 值,即 yyyy-mm-dd hh:mm:ss
由于您说输入格式是 monday/day
,但提供的是 day/month
值和 NO 时间值,因此您会得到不稳定的结果。
尝试
24/01/2016
STR_TO_DATE( '$date_1', '%d/%m/%Y' )
相反。请注意时间格式字符的删除。您输入的字符串根本没有时间值。
mysql> select str_to_date('24/01/2016', '%m/%d/%Y %h:%i');
+---------------------------------------------+
| str_to_date('24/01/2016', '%m/%d/%Y %h:%i') |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> select str_to_date('24/01/2016', '%d/%m/%Y');
+---------------------------------------+
| str_to_date('24/01/2016', '%d/%m/%Y') |
+---------------------------------------+
| 2016-01-24 |
+---------------------------------------+
1 row in set (0.00 sec)
我正在尝试将 2 个英国格式 (dd/mm/yyyy) 的日期插入 MySQL 美国日期格式的 MySQL 数据库。
我正在使用 str_to_date。 str_to_date 的第一个实例按预期工作,但第二个实例始终插入与 str_to_date 的第一个实例相同的日期,即使原始日期不同。
$date_1 = "10/01/2016";
$date_2 = "16/02/2016";
$sql = "INSERT INTO customers (date_1, date_2)
VALUES (STR_TO_DATE( '$date_1', '%m/%d/%Y %h:%i' ), STR_TO_DATE( '$date_2', '%m/%d/%Y %h:%i' ))";
在 MySQL 插入语句中处理多个 str_to_date 实例的正确方法是什么?
谢谢
str_to_date()
的格式字符串告诉 MySQL 第一个参数的日期值的格式。它不是如何格式化进入 mysql 的值(例如目的地)格式。 str_to_date 的输出始终是原生 mysql date/time 值,即 yyyy-mm-dd hh:mm:ss
由于您说输入格式是 monday/day
,但提供的是 day/month
值和 NO 时间值,因此您会得到不稳定的结果。
尝试
24/01/2016
STR_TO_DATE( '$date_1', '%d/%m/%Y' )
相反。请注意时间格式字符的删除。您输入的字符串根本没有时间值。
mysql> select str_to_date('24/01/2016', '%m/%d/%Y %h:%i');
+---------------------------------------------+
| str_to_date('24/01/2016', '%m/%d/%Y %h:%i') |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> select str_to_date('24/01/2016', '%d/%m/%Y');
+---------------------------------------+
| str_to_date('24/01/2016', '%d/%m/%Y') |
+---------------------------------------+
| 2016-01-24 |
+---------------------------------------+
1 row in set (0.00 sec)