0

私は現在、次の変数とフォーマットされたデータを持っています:

  • Scheduling_StartDate_Month = 10
  • Scheduling_StartDate_Day = 1
  • Scheduling_StartDate_Year = 2012
  • Scheduling_StartTime = 3:00 PM

それらを「datetime」タイプの1つの変数「schedstart」に結合してデータベースに挿入する必要がありますが、完全に失われます。問題を調査して、mktime()またはsttodate()を使用するための提案を見つけましたが、信頼できる構文ガイドラインが見つかりませんでした。

PHPを使用してこれらの変数を組み合わせるにはどうすればよいですか?

4

3 に答える 3

3

STR_TO_DATE()およびCONCAT()関数を使用する次のものを使用できます。

select 
  str_to_date(
    concat(Scheduling_StartDate_Year,'-',
          Scheduling_StartDate_Month, '-',
          Scheduling_StartDate_Day, ' ',
          Scheduling_StartTime), '%Y-%m-%d %h:%i') as yourDate
from yourtable

SQL FiddleWithDemoを参照してください

結果:

yourDate
2012-10-01 03:00:00
于 2012-10-01T22:27:20.020 に答える
1

PHPで適切な形式で連結することを検討できます。

<?php

$dateString = $Scheduling_StartDate_Month."/".$Scheduling_StartDate_Day."/".$Scheduling_StartDate_Year." ".$Scheduling_StartTime;
$result = mysql_query("SELECT STR_TO_DATE('".$dateString."', '%m/%d/%Y %h:%i %p')");

?>
于 2012-10-01T22:29:26.513 に答える
0

PHPで非常に簡単に実行できるのに、なぜSQLでこれを実行したいのかわかりません。

(通常、SQLサーバーにかかる負担をできるだけ少なくするのが最善です。これは通常、ボトルネックであり、さらに、SQLで使用してつなぎ合わせるのははるかに醜いですCONCAT

MySQLの日付は、基本的に特定の方法でフォーマットされた文字列です。例えば2008-12-31 23:59:59

したがって、異なる日付部分を取得して、そのように見えるようにまとめてから、SQLクエリで自由に使用します(一重引用符で囲みます)。

詳細については、 MySQLのドキュメントを参照してください。

最も簡単な方法は次のようになります。

$mysql_formatted_date = date('Y-m-d H:i:s', strtotime("Scheduling_StartDate_Year-$Scheduling_StartDate_Month-$Scheduling_StartDate_Day $Scheduling_StartTime"));

つまり、strtotime日付を解析し、午前/午後から24時間制への変換を処理してから、を使用dateしてそれを正しい形式に強制します。

mysql_query("SELECT '$mysql_formatted_date' ...");
于 2012-10-01T22:35:21.333 に答える