PHP PDO将字符串转换为MS SQL datetime2

时间:2018-06-18 10:44:31

标签: php sql-server pdo


我将我的字符串转换为有效的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'

指定的无效属性

我希望你能帮助我,
诚恳,

1 个答案:

答案 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'])));