【发布时间】:2023-04-11 12:36:02
【问题描述】:
我在将字符串转换为有效的 datetime2 以在 MS SQL DB 中使用时遇到问题。
我正在使用 SQL 中的 CAST 运算符将其转换为有效格式。
代码如下所示:
include("sqlconnection.php");
$statement = $pdo->prepare("UPDATE auftrag SET bestelldatum = CAST(:bestelldatum AS datetime(7)), lieferdatum_wunsch = :lieferdatum, fk_id_kunde = (Select id_kunde from kunde where firmenname = :kunde), fk_id_auftragsstatus = (SELECT id_auftragsstatus from auftragsstatus WHERE bezeichnung = :status) WHERE id_auftrag = :id");
$result = $statement->execute(array("bestelldatum" => $_POST['bestelldatum'], "lieferdatum" => $_POST['lieferdatum'], "kunde" => $_POST['kunde'], "status" => $_POST['status'], "id" => $_POST['id']));
echo $result;
$_POST['bestelldatum'] 的格式如下所示:dd/mm/yyyy
我收到以下错误:
Uncaught PDOException: SQLSTATE[42000]:
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]CAST oder CONVERT: Für
den datetime-Typ wurden ungültige Attribute angegeben. in
C:\xampp\htdocs\php\scripts\scripts.php:402 Stack trace: #0
C:\xampp\htdocs\php\scripts\scripts.php(402): PDOStatement->execute(Array) #1
C:\xampp\htdocs\php\scripts\scripts.php(30): saveAuftragChanges() #2 {main}
thrown in C:\xampp\htdocs\php\scripts\scripts.php on line 402
已翻译:转换或转换为类型“日期时间”指定的无效属性
希望你能帮助我,
此致,
简
【问题讨论】:
-
如果在 PHP 中将
$_POST['bestelldatum']转换为有效的日期格式,然后从 SQL 中删除CAST(),是否会出现错误?$bestelldatum = date('Y-m-d',strtotime($_POST['bestelldatum']));? -
我试过了,它给出了错误:将字符串转换为日期或时间时出错。它在这一行:
$bestelldatum = date('Y-m-d',strtotime($_POST['bestelldatum']));
我试过了,strtotime($_POST['bestelldatum'])给了我什么,它返回一个空字符串 -
那么
$_POST['bestelldatum']可能不是正确的数据格式。当您var_dump($_POST['bestelldatum']);时,您会得到什么? -
转储给出以下内容:string(10) "27/06/2018" 并从下面的答案中转储 $bestelldatum 给出以下内容:string(10) "2018-06-28"
标签: php sql-server pdo