2017-12-29 21 views
4

次のmysql行を含むページで作業しています。 overal目的は、日付に一定の日数を追加することができ、現在の日付mysqlステートメントを理解していないDATE_ADD(NOW()INTERVAL)

$sql = "select distinct weekNum from " . DB_PREFIX . "schedule where DATE_ADD(NOW(), INTERVAL " . SERVER_TIMEZONE_OFFSET . " HOUR)" 

As per my researchDATE_ADD()に現在の週のNUMと一致することです。

したがって、私はDATE_ADD(NOW()に...現在の日付を追加すると仮定していますか?

INTERVALとは正確に何が行われますか?

上記の説明を明確に説明する援助は大変ありがとうございます。その後、実際の計算に現在の日付に加算される限り、私はこの文は

INTERVAL " . SERVER_TIMEZONE_OFFSET . " HOUR 

タイムゾーンの違いを管理しようとしていることは異なるタイムゾーンのために(時間単位)の違いを返す(サーバーおよびオフセット)する必要があり見ることができるように

+0

の間、サポートされている任意の時間の値にすることができ、キーワードINTERVAL numbe単位と単位の量は 'DATE_ADD'も時間が日付に追加することができます。あなたのコードは、サーバーオフセットでタイムスタンプを調整しているようです。ちなみに、プリペアドステートメントの使用を検討してください。 –

+0

ちょっと@TimBiegeleisenは入力していただきありがとうございます。私のコードではなく、準備されたステートメントと上記のコードを理解するのに苦労しています。 –

+0

私のコメントの後、あなたには何が分かりませんか? –

答えて

2

スケジューリングのための時間。

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

DATE_ADD(日付、INTERVAL exprのユニット)から、DATE_SUB(日付、INTERVAL exprの部) これらの関数は、日付演算を行います。 date引数は、開始日またはdatetime値を指定します。 exprは、開始日から加算または減算される間隔値を指定する式です。 exprは文字列です。負の間隔では - で始まることがあります。 unitは、式が解釈されるべき単位を示すキーワードです。

2
DATE_ADD(NOW(), INTERVAL 2 HOURS) 

- これは、現在の時刻

に2時間を追加する - フォーマットは、DATE_ADD(date, INTERVAL value unit)

値は何もすることができている - >数

部あろう - →次のリストから何か

MICROSECOND 
SECOND 
MINUTE 
HOUR 
DAY 
WEEK 
MONTH 
QUARTER 
YEAR 
SECOND_MICROSECOND 
MINUTE_MICROSECOND 
MINUTE_SECOND 
HOUR_MICROSECOND 
HOUR_SECOND 
HOUR_MINUTE 
DAY_MICROSECOND 
DAY_SECOND 
DAY_MINUTE 
DAY_HOUR 
YEAR_MONTH 

So

DATE_SUB(date、INTERVAL value unit)関数を使うことができます。これは、あなたが希望している希望を差し引くものです。詳細については、リンクを参照してください[https://www.w3schools.com/sql/func_mysql_date_add.asp]

2

これは日付です - この場合は "今"とあなたの広告をいくつかあなたのものです。 この場合、サーバーのタイムゾーンオフセットを読み取り、それを追加します。

結果は、GMT-0ベースの時間に基づいて選択する日付になります。
1日はあなたが任意の間隔
2を追加する:

関連する問題