gpt4 book ai didi

php - mySQL Workbench 错误 : Syntax Error, 意外的单引号

转载 作者:行者123 更新时间:2023-11-29 03:18:14 25 4
gpt4 key购买 nike

我试图在 PHP 中创建 SQL 语句,将字符串转换为时间 (6)。但在过去的 12 个小时里,我已经尝试了一切,但没有取得任何进展。我已经尝试过这些语句,都产生相同的错误。

UPDATE scheduling SET start='03:42PM' WHERE activityid=2;

UPDATE scheduling SET start=CONVERT(TIME(6),'03:42PM');

INSERT INTO scheduling(start) VALUES (start=CONVERT(TIME(6),'03:42PM'));

INSERT INTO scheduling(start) VALUES (start=CONVERT(TIME(6),'03:42PM'));

INSERT INTO scheduling(start) VALUES (start=CONVERT(TIME(6),'15:42'));

错误是

Syntax Error: unexpected '03:42PM'(single quoted text)"

我不知道如何解决这个问题,该表存在,并且我已经使用诸如 SELECT activityid=2 FROM xxxxxx.scheudling

之类的语句成功获得了其他信息

我想我有两个问题,任何一个答案都可以。

  1. 在我的 PHP 文档中,我如何将从 Android Studio 截击中获取的字符串转换为日期。 (我使用 $start=$_Post("start") 正确地获取了变量,这样就可以了,但是我不能将它转换成时间。我在网上看了看,并尝试了所有看起来像的东西工作工作。

  2. 通过SQL代码转换,我已经尝试了CASTCONVERT,都没有用。我的起始列是类型 TIME(6)

最佳答案

我建议使用 SELECT 语句测试表达式。

首先,MySQL CONVERT 函数参数向后翻转。

语法是CONVERT(expr,type)

type 是作为关键字提供的,而不是字符串文字。例如:

 SELECT CONVERT('235',SIGNED)

转换为TIME数据类型

 SELECT CONVERT( '15:42' ,TIME(6))     // => 15:42:00.000000

字符串文字的“PM”部分将被忽略。

 SELECT CONVERT( '03:42PM' ,TIME(6))   // => 03:42:00.000000

我们可以使用 STR_TO_DATE 函数从包含 AM/PM 指标的字符串中返回一个 TIME 值

SELECT STR_TO_DATE( '03:42PM' ,'%h:%i%p')

而且不需要将其转换为 TIME(6),我们可以这样做:

UPDATE scheduling
SET start = STR_TO_DATE( '03:42PM' ,'%h:%i%p')
WHERE activityid = 2

STR_TO_DATE 函数记录在此处:

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

STR_TO_DATE 的格式模式记录在此处,在 DATE_FORMAT 下:

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format


跟进

演示:

设置

USE test;
CREATE TABLE scheduling (activityid INT PRIMARY KEY, start TIME(6));
-- 0 row(s) affected
INSERT INTO scheduling (activityid) VALUES (2);
-- 1 row(s) affected

执行上面答案中的update语句

UPDATE scheduling SET start = STR_TO_DATE( '03:42PM' ,'%h:%i%p') WHERE activityid = 2 ;
-- 1 row(s) affected

结果

SELECT * FROM scheduling WHERE activityid = 2;
-- activityid start
-- ---------- ---------------
-- 2 15:42:00.000000

第二次跟进

使用 OP 报告的相同 sql_mode 设置:

SET @@sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' ;

测试:

SELECT STR_TO_DATE( '03:42PM' ,'%h:%i%p')

返回

(NULL)

但是这个更复杂的表达式:

SELECT TIME(STR_TO_DATE(CONCAT(CURRENT_DATE(),' ', '03:42PM' ),'%Y-%m-%d %h:%i%p'))

返回

15:42:00

更复杂的表达式是一种解决方法,可以避免 sql_mode 中的 STRICT_TRANS_TABLESNO_ZERO_DATE 强加的行为。

关于php - mySQL Workbench 错误 : Syntax Error, 意外的单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50650110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com