0

MSSQL関数を実行してPHPに戻り、PHPで関数を2回使用してMySQLデータベースに書き込んでいます。

$to と $from を使用している関数を初めて実行するとき (私はそれがきれいではないことをよく知っています。私は本業の php コーダーではありません...)

$to = date("j M Y", mktime());
$year = date("Y", mktime());
$jan = '1 jan ';
$from = $jan . $year;

私はその後、以下を使用しています

select * from MISYearToDate('$from', '$to')

そしてそれは絶対にうまくいきます。

次に同じことをしますが、今週の日付を

$weekstarting = date('j M Y', strtotime('last sunday'))."<br>";
$weekending = date('j M Y', strtotime('next saturday'))."<br>";

そして実行します

select * from MISYearToDate('$weekstarting', '$weekending')

エラーが発生します

[Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting date and/or time from character string. ) 

$From および $to エコー

1 jan 2012
27 Jun 2012

$weekstarting と $weekend のエコー

24 Jun 2012
30 Jun 2012

私が知る限り、実際には違いはなく、私はかなり混乱しています!

4

2 に答える 2

1

yyyy-mm-dd の形式で日付のみを SQL に入力することをお勧めします。これにより、SQL が日付形式と混同されなくなります。

SQL は、2012 年 1 月 1 日という形式の日付を (文字列として) 受け入れません。

于 2012-06-27T11:13:04.993 に答える
1
$weekending = date('j M Y', strtotime('next saturday'))."<br>";
                                                       ^^^^^^^

<br>は、SQL 日付文字列の有効なコンポーネントではありません。おそらくブラウザで出力を表示しているため、<br>は効果的に隠されていますが、そこに問題があります。

それはあなたのクエリを次のように変えています:

select * from MISYearToDate('24 Jun 2012<br>', '30 Jun 2012<br>')
于 2012-06-27T11:22:09.157 に答える