1

mysql を使用してクエリを作成しようとしています。

select ID,NCOde,ifnull(EndTime,now())-starttime from xxx where starttime between 
'2012-05-09 00:00:00' and '2012-05-09 23:59:59' 

問題は、ifnull(EndTime,now()) が 24 時間形式で日時を返し、開始時刻が am/pm 形式を使用していることです。

を使ってみDATE_FORMAT(starttime, '%m-%d-%Y %T')たのですが、操作で日時型が別の型に変わってしまったようです。

何かアドバイス?

4

2 に答える 2

1

文字列をMySQLSTR_TO_DATE()に変換するために使用します:starttimeDATETIME

STR_TO_DATE(starttime, '%m-%d-%Y %r')

次に、を使用TIMEDIFF()して2回減算します。

select ID,NCOde,
  TIMEDIFF(ifnull(EndTime,now()), STR_TO_DATE(starttime, '%m-%d-%Y %r'))
from xxx
where STR_TO_DATE(starttime,'%m-%d-%Y %r')
        between '2012-05-09 00:00:00' and '2012-05-09 23:59:59'

おそらく、starttime列のデータ型をDATETIMEまたはに変更することを検討する必要がありますTIMESTAMP。また、これはすでにそのようなデータ型であると想定していることにも注意してくださいEndTime。そうでない場合は、同様の変換も実行する必要があります。

于 2012-05-09T11:17:45.007 に答える
0

DATE_SUB()関数を使用します。

加えて、eggyalが言ったこと。

于 2012-05-09T11:20:53.040 に答える