このようにMSSQL 2008の日時フィールドに日付/時刻のレコードを挿入しようとすると
$pQuery = "INSERT INTO myTable (myDate) VALUES (:my_date)";
$ps = $pdo->prepare($pQuery);
$ps->bindValue("my_date", date("Y-m-d H:i:s",strtotime('01.07.2013')), PDO::PARAM_STR);
$ps->execute();
2013 年 7 月 1 日を表す文字列 '01.07.2013' (DD.MM.YYYY) を使用すると、テーブルでは 2013 年 1 月 7 日を表す '2013-01-07 00:00:00' の値になります。
日が 12 より大きい場合、挿入は PDOException "SQLSTATE[22007]: [Microsoft][SQL Server Native Client 11.0][SQL Server]The conversion of a nvarchar data type to a datetime data type results in an out-of] で失敗します-範囲値」。
datetime2フィールドに対してまったく同じことを行うと、正しく挿入されます。誰でもこれを回避する方法を知っていますか? データ型を datetime から datetime2 に変更することはできません。ありがとうございました。