我将我的字符串转换为有效的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
已翻译:转换或转换为类型' datetime'
指定的无效属性我希望你能帮助我,
诚恳,
扬
答案 0 :(得分:1)
strtotime函数要求带斜杠的日期采用美国格式(mm / dd / yyyy),但您的日期采用欧洲格式,因此首先需要将斜杠更改为破折号。使用以下命令格式化SQL的日期。
$bestelldatum = date('Y-m-d',strtotime(str_replace('/','-',$_POST['bestelldatum'])));
如果还需要时间,请尝试改为(仅更改是为创建的变量添加有效时间)。
$bestelldatum = date('Y-m-d 00:00:01',strtotime(str_replace('/','-',$_POST['bestelldatum'])));