2017-12-19 1 views
0

私は学校の仕事のためのデータベースを作成していますが、私がしたいことに問題があります。
私は実際のケースに取り組んでいるので、私は終了日開始日、および関係の期間、と私は期間のトリガーを作成する必要が属性を持っています。しかし、まずそれを計算する必要があります。 StartDateおよびEndDateから派生した属性ですが、その方法はわかりません。 私はそれを行うためにプロシージャと関数をチェックしています(タプルが挿入されるたびにSQLがそれを計算するようにする必要があります)。私はDATEDIFFを使用しようとしていましたが、私は本当に既存の属性でそれを行う方法を知らない。誰でも助けてくれますか?startdateとenddateから継続時間を計算するプロシージャSQL

+1

DATEDIFFをどのように使用しようとしたか、結果に何が問題なのかを教えてください。 –

+0

属性 'EndDate'、 'StartDate'を持つテーブルにトリガを作成することができます。更新前にトリガーを置くことができ、 'durationiff'(日数)または' timediff'(時:分::秒)を使って 'Duration'の値を計算することができます。 'new.duration = datediff(new.end_date、new.start_date)' – DecoderReloaded

+0

レコードの場合は、コードを使って何かを行うのは初めてです。とても素朴です。私は属性EndDateとStartDateでそれを使用しようとしています:DATEDIFF(Days、StartDate、EndDate)しかし、SQLは使用できません。私は具体的な例と何も試していません。これは私が今持っているものです:DELIMITER $$ PROCEDURE spCalculateDurationをCREATE() が \t選択床を開始します(DATEDIFF(日、5、'05 -06-2017' ))期間 AS UserObjectiveからDuracao BY UO ORDER AS DESC; END $$ –

答えて

0

あなたの記事のDecoderReloadedさんのコメントをより深く理解する必要があります。

クエリが開始されたときにINSTEAD OF triggerをカラムに残すと、終了時に別のカラムにAFTERトリガを保持することができます。

例:

CREATE TRIGGER TriggerInsteadOf 
ON YourTable 
INSTEAD OF INSERT, UPDATE 
--You should repeat your queries here (as always needed with INSTEAD OF triggers) and set the datetime column value for the start time. 
GO 

CREATE TRIGGER TriggerAfter 
ON YourTable 
AFTER INSERT 
--Don't need to repeat your queries here (as always happen with AFTER triggers) and set the datetime column value for the end time, or a DATEDIFF() to obtain the timespan. 
GO 

倍数のアップデートに気をつけろとあなたは多分あなたが達成したいかに応じて、あまりにも削除するコマンドを検討すべきです。

これは究極のアイデアではありませんが、実装するとうまくいくでしょう。がんばろう。

+0

ありがとうございました!私はそれに取り組んでいます!もう一度、ありがとう! –

関連する問題