1

これで輪になって回っています!私は次のことをしています:

  1. SQL/PHPを介してMSSQL日時フィールドから日付を取得する
  2. クエリ文字列を介して新しいPHPページに日付を送信する
  3. 新しい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データ型を日時データ型に変換すると範囲外の値になりました」というエラーで失敗します。

4

2 に答える 2

1

これらは、探しているものに光を当てるのに役立つ場合があります。

http://www.ozu.com/programming-forum/php-mssql-datetime-field-not-pulling-correctly-t106226.html

http://af-design.com/blog/2010/03/13/microsoft-sql-server-driver-for-php-returns-datetime-object/

strtotime() は、上記の例でエポック タイムスタンプを返しています。

またはCASTとCONVERTを確認してください(MSSQL2000を参照しますが、それでも役立つ場合があります)
http://msdn.microsoft.com/en-us/library/aa226054%28SQL.80%29.aspx

于 2012-11-13T15:52:01.123 に答える
0

日付がMSSQLテーブルから取得され、strtotime()PHPで使用したいが、日付形式をyyyy-mm-ddに変更したくない場合は、使用できます

CONVERT(VARCHAR(30), DateFromMSSQL, 121) as DateFromMSSQL
于 2016-04-19T16:12:44.347 に答える