QML: calculate the time interval between the touch events

I create a custom button that is activated by a key event, in this way:

Container {
    property bool pressed
    signal clicked...
    onTouch: {
        if (enabled && ! event.isMove()) {
            if (event.isUp() && pressed) clicked()
            pressed = event.isDown()
        }
    }
}

The problem with this approach is that if the user clicks the custom button several times in a short period of time the click signal is triggered several times too. This does not happen if I use a regular button or an ImageButton.

I was thinking about getting the timestamp of the event and fire the only if clicked event grit touch after at least x milliseconds since the previous event. The DIF is that I couldn't find a way to calculate this difference in QML.

Any suggestions?

You could also follow the time of the last event with the Javascript date.

lastTouched = new Date().valueOf();

-Check if time has passed...

Tags: BlackBerry Developers

Similar Questions

  • Are the touch events in new broken ripple?

    Hello

    I have a PlayBook application that uses touch events to shake things. I tested it in the stand-alone version of ripple and the physical device.

    Now I think on porting the app to BB10, so I downloaded the verion of ripple Chrome and I found that in the waving of the new, I can't move any object!

    I've identified the problem, but I don't know how to cope. Here is a small HTML file that shows the problem:

    http://www.w3.org/1999/xhtml">
    
    
    
        
    child

    So basically there is a div container that listenes to the touchstart and if this event happens that it displays an alert. In the ripple of old (and on the PlayBook device) If you press the 'child' div the alert is also shown (the event is pushed down and intercepted by containers). In the waving again, it happens.

    Any suggestions? I can force ripple action as does the Playbook? Maybe I should use another technique to capture touch events?

    Hi razorek,

    I'm not sure of the reason (his behavior of WebKit), but the propagation of the event using the AddEventListener method will allow when you use touchstart. Take a look:

    http://www.w3.org/1999/xhtml">
    
    
    
        
    child

    Also, when using ripple for Chrome, please make sure that "Emulate touch events" are not verified, since ripple there are tactile own emulation system and it may come into conflict with it.

    F12 (Open Developer Tools) > click on the gear icon in the lower right > Exceptions tab > emulate the Touch events. I'll also post this work around for that matter https://github.com/blackberry/Ripple-UI/issues/344 github page

  • stimulate the touch event handling in PRC?

    I want to stimulate the touch event in another application. can someone help me in explaining to me with a code example.

    I'll pass on this one, whenever I give you an answer to a topic, change you what you wanted in the first place.
    First of all, you wanted to listen to the event:
    http://supportforums.BlackBerry.com/T5/native-development/touch-does-not-fire-for-Q10/TD-p/3026980

    Second, you were finally made in the PRC:
    http://supportforums.BlackBerry.com/T5/native-development/touch-event-handling-in-CPP/TD-p/3027043

    Third, you asked to simulate a key event in this thread I made.

    Now, this isn't what you want, you want to simulate a click on a button.

    I'll let someone else answer that one.

  • Convert Dialog.alert to handle the touch event

    Anyone know how I can convert my dialog.alert to handle the touch event

    Please help me = D

    You don't need - if you use the standard RIM dialogue he class shoud touch event itself.

  • Nature of the touch events

    Hello ladies and gentlemen,

    I am currently working on activating the touch support to an existing application to my friends, and I'm running into some difficulties. My screen consists of a few: on the bottom, I have a row of BitmapFields acting as buttons all content in a HFM, above that I have a great EditField, and above I have a HFM with a few more selectable BitmapFields.

    First of all, I'm not sure that should be implemented in touchEvent(), my managers or the fields themselves. I tried both, but noticed a strange behavior. It seems that the field that currently has the focus Gets the touchEvent little anywhere on the screen, the key event occurs.

    I think that the OS would simply understand that touching an object simply focusable means 'set the focus to this item"and clicking on the object means 'click on this object', I don't think you should even implement the touchEvent() method to achieve this effect.

    Does anyone have experience of writing applications for the storm? Am I missing something?

    Thank you
    Tyler

    Thank you Rex,

    I did a search on "touchEvent" but did not find much.

    Oops, looks like I just got this job.

    Let me explain what I have in case someone else comes on this thread:
    -My screen has a 'top manager' who handles most of the items on the screen, including other managers

    -J' have a HFM at the bottom of the screen (which is managed by my Senior Manager) that contains several BitmapFields that act like buttons
    -The question I had was trying to setFocus in the appropriate field when this field was hit

    Here's what I added to my managers to manage events:

    protected boolean touchEvent(TouchEvent event)    {        //Figure out where the touch occurred on the screen        int globX = event.getGlobalX(1);        int globY = event.getGlobalY(1);
    
            //Determine if the touch occurred within the extent of this manager        if (getExtent().contains(globX, globY))        {            if (event.getEvent() == TouchEvent.DOWN)            {                //Get the position of the touch within the manager                int x = event.getX(1);                int y = event.getY(1);
    
                    //See if there is a field at this screen position                int fieldIndex = getFieldAtLocation(x, y);
    
                    if ((fieldIndex >= 0) && (fieldIndex < getFieldCount()))                {                    //Set the focus to the field at this position                    Field f = getField(fieldIndex);                    f.setFocus();                }
    
                    //Return false so that the event propagates to the contained field                return false;            }        }
    
            //Event wasn't for us, handle in default manner        return super.touchEvent(event);    }
    

    In addition, you must ensure you set the scope of your managers correctly, both real as virtual, I usually do when I'm in the override of the sublayout() method.

    Hope this helps people.

  • How the MovieClip not to block the touch events

    Hey guys,.

    I'm trying to do something that should be simple.  I have a listener to button a button, this button has a MovieClip that is located on the top, so my button below will not receive the click event of the mouse.  How can I keep the MovieClip above the button but allow the mouse click event move to the button?

    Thank you

    Assuming you named the MovieClip "myMovieClip".

    To write

    myMovieClip.mouseChildren = false;

    myMovieClip.mouseEnabled = false;

    The ClickEvent must spend in the MovieClip safe and sound.

  • What is the time interval between two Oracle certification exams?

    Hello world

    I'm looking forward to associate level certification in SQL and PL/SQL.

    According to a link from the official website of Oracle, I need to spend the next two STAGES to win the Oracle PL/SQL Developer Certified Associate Certification. The two steps are:

    URL of the location where the screenshots below (measures) is as follows:

    https://education.Oracle.com/pls/web_prod-PLQ-dad/db_pages.GetPage?page_id=653 & get_params = P_ID:162 #tabs - 1

    Capture1.JPG

    Capture2.JPG

    There are to options available in two stages , so I chose to give the two following tests:

    1 (from step 1) EXAM: 1Z0-061 (database Oracle 12 c: basic SQL)

    REVIEW 2 (step 2): 1Z0-144 (Oracle Database 11 G: program PL/SQL)

    Now my questions are these:

    Question 1: I intend to take the exam 1Z0-061 first (lets say in June), may therefore take the second exam (1Z0-144) at any time after appearing for the first review or is there no specific time frame in which I'm suppose to take the second review?


    Question 2: will what type of certification I get if I take only one exam (1Z0-061 or 1Z0-144)? I know Oracle's official website said that in order to get "Oracle PL/SQL Developer Certified Associate Certification", I need to pass the two exams; but what happens if I chose to give only a single review at the present time? In the case giving a single review, what type of document of certification will I right to (wave speculation: right to half certification Oracle PL/SQL Developer )?

    Thanking you.


    Best regards

    Ankit

    Answer 1: He is there no time limit/limit. Finally, I guess Oracle takes his retirement 1Z0-144, but which does not occur for many years.  They have not even removed from the earlier incarnation (1Z0-147).

    Answer 2: Passing a review in itself does not have a certification or credential.  The only "book", you will have is the sheet of test results.

  • Problem with the touch event

    Hi guys,.

    I overrided the onTouchEvent on the ground and the following code does not work for certain fields (all are focusable):

        protected boolean touchEvent(TouchEvent touchEvent)
        {
            if (getExtent().contains(touchEvent.getX(1), touchEvent.getY(1)))
            {
                if (touchEvent.getEvent() == TouchEvent.DOWN)
                {
                    down = true;
                    invalidate();
                }
                else if (touchEvent.getEvent() == TouchEvent.UP)
                {
                    down = false;
                    invalidate();
                }
            }
            return super.touchEvent(touchEvent);
        }
    

    Do you know why?

    Resolved. Need to check the limits of rect.

    Event is called only for a good INTERFACE control.

    Great!

  • Time interval in the output file is different from the sampling frequency

    Hello

    I'm a load at 1000 Hz. cell sampling I send information to the VI "write to a measurement file. When I opened the .tdms in excel, the time interval between samples is 0,00062 seconds instead of 0.001 seconds. Is it possible to change the time interval seconds a.001?

    Kind regards

    Johan Hendrikse

    It has sampling frequencies different - he has simply not an infinite number of them. I should have been a little more clear as to what I wanted. Have you read the specifications? Sampling frequencies are defined as 50 000 / n where n is an integer between 1 and 31. When you specify a rate, the driver will put it to the nearest that the material support. A little arithmetic shows that 50000/31.00062. How do you rate? Will this work with a DAQ Assistant?

  • Disconnect the Touch: mouseEnabled

    Hello

    I find a way to touch (click) something under the other object. If I try with MouseEvent, I just need to write mouseEnabled = false or change the hitArea, but i ' ts does not work with the touchEvent.

    So, how can I ignore the touch event in a Sprite or MovieClip.

    Thank you all,

    Mike

    You probably have an affected area of irregular shape. Place a box on top of the object that you are clicking on through and make it 100% transparent or alpha = 0, then you won't be able to hit around the objects in the slots.

  • iLLEGALARGUMENT EXception on touch event

    package mypackage;
    
    import java.util.Vector;
    
    import net.rim.device.api.system.Display;
    import net.rim.device.api.ui.Field;
    import net.rim.device.api.ui.FocusChangeListener;
    import net.rim.device.api.ui.Font;
    import net.rim.device.api.ui.Graphics;
    import net.rim.device.api.ui.Manager;
    import net.rim.device.api.ui.TouchEvent;
    import net.rim.device.api.ui.TouchGesture;
    import net.rim.device.api.ui.UiApplication;
    import net.rim.device.api.ui.XYRect;
    import net.rim.device.api.ui.component.BasicEditField;
    import net.rim.device.api.ui.component.ButtonField;
    import net.rim.device.api.ui.component.LabelField;
    import net.rim.device.api.ui.component.SeparatorField;
    import net.rim.device.api.ui.component.Status;
    import net.rim.device.api.ui.container.HorizontalFieldManager;
    import net.rim.device.api.ui.container.MainScreen;
    import net.rim.device.api.ui.container.VerticalFieldManager;
    
    public class PlaylistTab extends MainScreen  implements FocusChangeListener{
    
        private int _xCoord = 0; //The x coordinate for the top left corner of the image.
        private int _yCoord = 0; //The y coordinate for the top left corner of the image.
        private int _xTouch = 0; //The x coordinate of the previous touch point.
        private int _yTouch = 0; //The y coordinate of the previous touch point.
    
        private LabelField tab1;
    
        private LabelField tab2;
    
        private LabelField tab3;
    
        private LabelField spacer1;
    
        private LabelField spacer2;
    
        private VerticalFieldManager tabArea;
    
        private LabelField tab1Heading;
    
        private BasicEditField tab1Field1;
    
        private BasicEditField tab1Field2;
    
        private LabelField tab2Heading;
    
        private BasicEditField tab2Field1;
    
        private BasicEditField tab2Field2;
    
        private LabelField tab3Heading;
    
        private BasicEditField tab3Field1;
    
        private BasicEditField tab3Field2;
    
        private VerticalFieldManager tab1Manager;
        private VerticalFieldManager tab2Manager;
        private VerticalFieldManager tab3Manager;
        int tabNum = 1;
        public PlaylistTab()
        {
            super(NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR);
            //HorizontalFieldManager hManager = new HorizontalFieldManager();
            HorizontalFieldManager hManager = new HorizontalFieldManager(NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR | NO_HORIZONTAL_SCROLL  | NO_HORIZONTAL_SCROLLBAR);
            Font font = getFont().derive(Font.PLAIN, 35);
            tab1 = new LabelField("Songs", LabelField.FOCUSABLE | LabelField.HIGHLIGHT_SELECT)
            {
                protected boolean navigationClick(int status,int time){
    
                    return true;
                }
                protected void layout(int width, int height) {
                    super.layout(width, height);
                    //    this.setExtent(this.getWidth(), 60);
                    this.setMargin( ( getHeight() - this.getPreferredHeight()), 0, 0, (getWidth() - this.getPreferredWidth()));
                }
            };
            tab2 = new LabelField("Album", LabelField.FOCUSABLE | LabelField.HIGHLIGHT_SELECT)
            {
                protected boolean navigationClick(int status,int time){
    
                    return true;
                }
                protected void layout(int width, int height) {
                    super.layout(width, height);
                    //    this.setExtent(this.getWidth(), 60);
                    this.setMargin( ( getHeight() - this.getPreferredHeight()), 0, 0, (getWidth() - this.getPreferredWidth()));
                }
            };
            tab3 = new LabelField("Artist", LabelField.FOCUSABLE | LabelField.HIGHLIGHT_SELECT)
            {
                protected boolean navigationClick(int status,int time){
    
                    return true;
                }
                protected void layout(int width, int height) {
                    super.layout(width, height);
                    //    this.setExtent(this.getWidth(), 60);
                    this.setMargin( ( getHeight() - this.getPreferredHeight()), 0, 0, (getWidth() - this.getPreferredWidth()));
                }
            };
            spacer1 = new LabelField(" | ", LabelField.NON_FOCUSABLE);
            spacer2 = new LabelField(" | ", LabelField.NON_FOCUSABLE);
    
            tab1.setFocusListener(this);
            tab2.setFocusListener(this);
            tab3.setFocusListener(this);
            hManager.add(tab3);
            hManager.add(spacer1);
            hManager.add(tab2);
            hManager.add(spacer2);
            hManager.add(tab1);
    
            add(hManager);
            add(new SeparatorField());
    
            tab1Manager = new VerticalFieldManager(VERTICAL_SCROLL | VERTICAL_SCROLLBAR );
            tab2Manager = new VerticalFieldManager(VERTICAL_SCROLL | VERTICAL_SCROLLBAR );
            tab3Manager = new VerticalFieldManager(VERTICAL_SCROLL | VERTICAL_SCROLLBAR );
    
            tabArea = displayTab3();
            add(tabArea);
    
        }
        public void focusChanged(Field field, int eventType) {
            if (tabArea != null) {
                if (eventType == FOCUS_GAINED) {
                    if (field == tab1) {
                        System.out.println("Switch to Tab 1");
                        delete(tabArea);
                        tabArea = displayTab1();
                        add(tabArea);
                    } else if (field == tab2) {
                        System.out.println("Switch to Tab 2");
                        System.out.println("Switch to Tab 1");
                        delete(tabArea);
                        tabArea = displayTab2();
                        add(tabArea);
                    } else if (field == tab3) {
                        System.out.println("Switch to Tab 3");
                        System.out.println("Switch to Tab 1");
                        delete(tabArea);
                        tabArea = displayTab3();
                        add(tabArea);
                    }
                }
            }
    
        }
    
        public VerticalFieldManager displayTab1() {
            try
            {
                tabNum = 3;
                final VerticalFieldManager Content= new VerticalFieldManager(Manager.USE_ALL_WIDTH|Manager.VERTICAL_SCROLL);
                Content.setMargin(5,0,0,0);
                int mas  = 0 ;
                Vector oleg = new Vector();
                SQLManager poligs = new SQLManager();
                poligs.getSongDownload(oleg, 0);
                while(mas < oleg.size())
                {
                    Song temp = (Song) oleg.elementAt(mas);
                    Content.add(new A_Song(temp.songId, temp.songName, false,temp.albumCover,temp));
                    mas++;
                }
                tab1Manager.deleteAll();
    
                HorizontalFieldManager topManager = new HorizontalFieldManager()
                {
                    public void paint(Graphics graphics)
                    {
                        graphics.setBackgroundColor(0x00000000);
                        graphics.clear(); super.paint(graphics);
                    }
                    protected void sublayout( int maxWidth, int maxHeight )
                    {
                        int width = Display.getWidth();
                        int height = this.getPreferredHeight();
                        super.sublayout( width, height);
                        setExtent( width, height);
                    }
                };
                CustomTextBox editField = new CustomTextBox();
                int pol = Display.getWidth() / 2;
                editField.setWidth(pol);
                ButtonField button = new ButtonField("Search");
                topManager.add(editField);
                topManager.add(button);
    
                //  tab1Manager.add(topManager);
                tab1Manager.add(Content);
            }
            catch(final Exception e)
            {
    
                e.printStackTrace();
                System.out.println("------------------- ");
            }
            return tab1Manager;
        }
    
        public VerticalFieldManager displayTab2() {
            try
            {
                tabNum = 2;
                final VerticalFieldManager Content= new VerticalFieldManager(Manager.USE_ALL_WIDTH|Manager.VERTICAL_SCROLL);
                Content.setMargin(5,0,0,0);
                int mas  = 0 ;
                Vector oleg = new Vector();
                SQLManager poligs = new SQLManager();
                poligs.getSongDownloads(oleg, 0);
                while(mas < oleg.size())
                {
                    Albums temp = (Albums) oleg.elementAt(mas);
                    Content.add(new A_Album(temp.albumId, temp.albumName, false,temp.albumCover,temp));
                    mas++;
                }
                tab2Manager.deleteAll();
                tab2Manager.add(Content);
            }
            catch(final Exception e)
            {
    
                e.printStackTrace();
                System.out.println("------------------- ");
            }
            return tab2Manager;
        }
    
        public VerticalFieldManager displayTab3() {
            try
            {
                tabNum = 1;
                final VerticalFieldManager Content= new VerticalFieldManager(Manager.USE_ALL_WIDTH|Manager.VERTICAL_SCROLL);
                Content.setMargin(5,0,0,0);
                int mas  = 0 ;
                Vector oleg = new Vector();
                SQLManager poligs = new SQLManager();
                poligs.getSongDownloadss(oleg, 0);
                while(mas < oleg.size())
                {
                    Artist temp = (Artist) oleg.elementAt(mas);
                    //Content.add(new A_AddSingersFM(temp.songId, temp.songName, false,temp.albumCover,temp,-1, tb, logIn,logOut,1,0,0, Register));
                    Content.add(new A_Artisti(temp.artistId, temp.artistName, false,temp.artistPhoto,temp));
                    //  int m = temp.getSongId();
                    mas++;
                }
                tab3Manager.deleteAll();
                tab3Manager.add(Content);
            }
            catch(final Exception e)
            {
    
                e.printStackTrace();
                System.out.println("------------------- ");
            }
            return tab3Manager;
        }
        protected boolean touchEvent(TouchEvent touchEvent)
        {
            int eventCode = touchEvent.getEvent();
    
            if(eventCode == TouchEvent.GESTURE){
                System.out.println("SWIPE GESTURE");
                TouchGesture g = touchEvent.getGesture();
                int gesturecode = g.getEvent();
                int direction = g.getSwipeDirection();
    
                //gallery.setHorizontalScroll(page_two, true);
                if(direction == TouchGesture.SWIPE_WEST)
                {
    
                    if(tabNum == 3)
                    {
                        delete(tabArea);
                        tabArea = displayTab2();
                        add(tabArea);
                    }
                    else if(tabNum == 2)
                    {
                        delete(tabArea);
                        tabArea = displayTab3();
                        add(tabArea);
                    }
                }
    
                if(direction == TouchGesture.SWIPE_EAST)
                {
    
                    if(tabNum == 1)
                    {
                        try
                        {
                            delete(tabArea);
                        }
                        catch(Exception e)
                        {
                            try
                            {
                                tabArea = displayTab2();
                            }
                            catch(Exception ef)
                            {
                                add(tabArea);
                                return false;
                            }
                            add(tabArea);
                            return false;
                        }
                        try
                        {
                            tabArea = displayTab2();
                        }
                        catch(Exception ef)
                        {
                            add(tabArea);
                            return false;
                        }
                        add(tabArea);
                        return false;
    
                    }
                    else if(tabNum == 2)
                    {
                        try
                        {
                            delete(tabArea);
                        }
                        catch(Exception e)
                        {
                            try
                            {
                                tabArea = displayTab1();
                            }
                            catch(Exception ef)
                            {
                                add(tabArea);
                                return false;
                            }
                            add(tabArea);
                            return false;
                        }
                        try
                        {
                            tabArea = displayTab1();
                        }
                        catch(Exception ef)
                        {
                            add(tabArea);
                            return false;
                        }
                        add(tabArea);
                        return false;
                    }
                }
            }
            //The touch event was not consumed.
            return false;
        }
    }
    

    On the sidelines, East or West navigation events I illegalargument exception.and my page crashing.

    However, when I run the same code through the debugger it works fine. I put my debugging inside the touchevent ifs and elses togglepoints.

    And note, if it crashes and I click on an illegal argument exception... I go back to the home page and as if the touchevent function was called twice and 2 strips was skipped.

    It works fine but through debugger.any help?

    very strange, I did this and it worked

    protected boolean touchEvent(TouchEvent message)
        {
            try
            {
                int eventCode = message.getEvent();
    
                if(eventCode == TouchEvent.GESTURE){
                    System.out.println("SWIPE GESTURE");
                    TouchGesture g = message.getGesture();
                    int gesturecode = g.getEvent();
    
                    switch(gesturecode) {
    
                        case TouchGesture.SWIPE:
                            int direction = g.getSwipeDirection();
                        //gallery.setHorizontalScroll(page_two, true);
                        if(direction == TouchGesture.SWIPE_WEST)
                        {
    
                            if(tabNum == 3)
                            {
                            //  delete(tabArea);
                            //  tabArea = displayTab2();
                            //  add(tabArea);
                                tab2.setFocus();
                                return super.touchEvent(message);
                            }
                            else if(tabNum == 2)
                            {
                            //  delete(tabArea);
                            //  tabArea = displayTab3();
                            //  add(tabArea);
                                tab3.setFocus();
                                return super.touchEvent(message);
                            }
                        }
                        else if(direction == TouchGesture.SWIPE_EAST)
                        {
    
                            if(tabNum == 1)
                            {
    
                                        //delete(tabArea);
                                        //tabArea = displayTab2();
                                        //add(tabArea);
                                        tab2.setFocus();
                                        return super.touchEvent(message);
    
                            }
                            else if(tabNum == 2)
                            {
    
                                    //delete(tabArea);
                                    //tabArea = displayTab1();
                                    //add(tabArea);
                                    tab1.setFocus();
                                    return super.touchEvent(message);
    
                            } }
    
                        break;
                    }
                }
                    //The touch event was not consumed.
                    return super.touchEvent(message);
            }
            catch(Exception eol)
            {
                return super.touchEvent(message);
            }
        }
    

    I do this on tab2.setfocus (), if I call setfocus it works... but if icall it separately as it is not and it hangs. very strange

    // delete(tabArea);
                            //  tabArea = displayTab2();
                            //  add(tabArea);
    
    
    
  • Click on replace touch event on tablets?

    Hello

    The click event replace the touch events on the shelves?

    I have a side project that I need to work on the computer and iPad.

    But I can't tell if it's the click event that works or the touch event is working on the Ipad

    Can anyone help?

    Hi Robyn,

    Events Click will be not to replace the events of button on iOS devices - both types of events are supported.

    However, touch events are fired instantly on touch and override to slam events if both co-exist on the same element. Also, the click event handler in the iOS have a predefined time about 300 MS to allow touch events (if they exist) to fire first.

    HTH,

    Joe

  • OpenGL + MMR video playback and touch events.

    Hello BB forums natively,.

    We have an openGL application that renders the video using the window mmrenderer child. Surface OpenGL is transparent and makes some elements of overlay the video above. It seems that the touch events are only sent when it arrives on the non-transparent part of the surface of the OpenGL. Is there a way to catch all touch events in this scenario (perhaps of the child window)?

    Thank you!

    Ask yourself properly the events with "screen_request_events..." with the context of the correct screen?

    Did you look in the GoodCitizen OpenGL sample application? It shows how all the events are received and process across the entire screen with a very similar use case;

    Martin

  • Calculate the elapsed time between the horodateurs log Table

    Hello

    I'm looking for some codes SQL allows to calculate the elapsed time between the timestamps in a log table.  The log table has some STOP-START operations.

    I just want to calculate the elapsed time between the START and PAUSE of Transactions, as well as START and EXECUTE transactions.

    So, in the example below, the time spent must be:

    START 09:15 break 09:20 (5 Minutes)
    START 09:30 to 09:45 (15 Minutes) FULL

    Total elapsed time for LOG_ID 1234 should be 20 minutes.  This excludes the 09:20 at 09:30 BREAK at the START time.

    LOG_ID

    SEQ_NUM

    LOG_TYPE_CD

    CRE_DTTM

    1234

    1

    BEGINNING

    09-15 - 2013:09:15:00

    1234

    2

    BREAK

    09-15 - 2013:09:20:00

    1234

    3

    BEGINNING

    09-15 - 2013:09:30:00

    1234

    4

    ALL THE

    09-15 - 2013:09:45:00

    Any suggestions?

    Thanks for your time

    -DT

    Hello

    Thanks for posting the CREATE TABLE and INSERT.  be sure to post the results desired from these data.

    user13071913 wrote:

    Hi thanks for the help...

    The date is a true timestamp.  ...

    Here's a sample of CREATE TABLE and a few inserts.  3 ID transaction, each with a series of journal entries.

    CREATE TABLE 'LOG_TABLE_X '.

    (SELECT 'ID' CHAR (14 BYTES) NOT NULL,)

    ACTIVATE THE "LOG_TYPE_FLG" TANK (4 BYTES) NOT NULL,

    ALLOW "LOG_DTTM" DATE NOT NULL

    );

    ...

    I'm so confused.  Is log_dttm a TIMESTAMP, you said in the story, or is it a DATE, as you say in the CREATE TABLE statement, or is it a VARCHAR2 as Thur INSERT statements?  I'll assume it's a DATE.

    I left out an important step yesterday.  The computation of the last_start, we need to use a CASE statement so that we record only the time of events STRT.

    Here's the revised query:

    WITH got_last_start AS

    (

    SELECT id, log_type_flg, log_dttm

    LAST_VALUE (CASE

    WHEN log_type_flg = "STRT".

    THEN log_dttm

    END

    IGNORES NULL VALUES

    ) OVER (PARTITION BY id - can - be

    ORDER BY log_dttm

    ) AS last_start

    OF log_table_x

    )

    SELECT id, log_type_flg, log_dttm

    , (log_dttm - last_start) * 24 * 60 elapsed

    , SUM (log_dttm - last_start) OVER (PARTITION BY ID.

    ORDER BY log_dttm

    ) * 24 * 60 AS total_elapsed

    OF got_last_start

    WHERE log_type_flg IN ("CMPT", "PAUS")

    ORDER BY id, log_dttm

    ;

    Output of your sample data:

    ID LOG_ ELAPSED TOTAL_ELAPSED LOG_DTTM

    -------------- ---- ------------------- -------- -------------

    1111 PAUS 09-26 - 2013:09:09:58.17.17

    1111 CMPT 09-26 - 2013:10:09:58 1.00.83

    2222 CMPT 09-26 - 2013:12:09:58 180.00 180.00

    3333 CMPT 09-26 - 2013:10:09:42 59.73 59.73

    In Oracle, when you subtract one DATE from another DATE, the result is the NUMBER of days between them.  In the above query, I multiplied the past columns and total_elapsed by the number of minutes per day (24 * 60), to show the time in minutes.

  • Need help to calculate the difference between times

    Hi all

    I have two fields that stores just the hour in 24-hour ex: 08:00 and 20:00 now I want to calculate the difference between two times

    Kindle help me

    Thanks for your help

    Thank you
    Ravi

    Hello

    diiference in hours

    SQL> WITH T AS (SELECT '08:00' ST_TIME, '20:00' END_TIME FROM DUAL)
      2  SELECT (TO_DATE (END_TIME, 'HH24:MI') - TO_DATE (ST_TIME, 'HH24:MI')) * 24 DIFF_HOURS
      3    FROM T;
    
    DIFF_HOURS
    ----------
            12
    
    SQL> 
    

    G.

Maybe you are looking for