これで輪になって回っています!私は次のことをしています:
- SQL/PHPを介してMSSQL日時フィールドから日付を取得する
- クエリ文字列を介して新しいPHPページに日付を送信する
- 新しいSQLクエリでその日付を使用しようとしています
ここで問題が発生しています。
エコーを使用する場合:
echo $_REQUEST['rSessionDate'];
output: 15/10/2012
これは問題ありませんが、SQLクエリで使用すると、期待した結果が得られないため、最初に日付として認識されるようにするのが最善の方法だと思いました。
date_format()を使用する場合:
echo date_format($_REQUEST['rSessionDate'],'Y-m-d');
output: Warning: date_format() expects parameter 1 to be DateTime, string given in ...
strtotime()を使用する場合:
echo strtotime($_REQUEST['rSessionDate']);
output: (nothing)
date()を使用する場合:
echo date('Y-m-d H:i',$_REQUEST['rSessionDate']);
output: Notice: A non well formed numeric value encountered in ...
strtotime()でdate()を使用する場合:
echo date('Y-m-d H:i',strtotime($_REQUEST['rSessionDate']));
output: 1970-01-01 01:00
単純なものが完全に欠けていると確信しています。
編集:私が見つけたいくつかの新しい関数を試しました:
$rSessionDate = new DateTime($_REQUEST['rSessionDate']);
echo $rSessionDate->format('Y-m-d H:i:s');
output: Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (15/10/2012) at position 0 (1): Unexpected character'
と:
$rSessionDate = date_create($_REQUEST['rSessionDate']);
echo date_format($rSessionDate, 'Y-m-d H:i:s');
output: Warning: date_format() expects parameter 1 to be DateTime, boolean given i
編集2:
CASTを使用してみました:
SELECT fCourseCode ,fCourseTitle FROM tCourses WHERE fCourseCode = '4B' AND (ISNULL(fValidStart, 0) <= CAST('2012-10-15 00:00:00' as DATETIME))
しかし、これは「varcharデータ型を日時データ型に変換すると範囲外の値になりました」というエラーで失敗します。