MATLAB Answers

sorting table according to date/time

18 views (last 30 days)
Ben Keshet
Ben Keshet on 28 Oct 2020 at 15:02
Answered: Steven Lord on 28 Oct 2020 at 15:26
Hi,
I have a table with a TimeStamp column with the format '6/29/2020 12:39:32.910 AM'. I want to sort the table in acesending order but by default Matlab treats the column as a string. I have tried using datetime to define the column as dat format:
>> t=datetime(T1T2.TimeStamp,'InputFormat', 'MM/DD/yyyy HH:mm:ss.sss')
which failed, probably becasue I am not defining the AM/PM symbols.
What is the best/easiest way to sort this table according to the date value?
Many thanks,
Ben

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 28 Oct 2020 at 15:22
There are problems with the 'InputFormat' format string.
Try this:
t=datetime(T1T2.TimeStamp,'InputFormat', 'MM/dd/yyyy hh:mm:ss.SSS a')
producing:
t =
datetime
29-Jun-2020 00:39:32
Note that the hours need to be ‘hh’ not ‘HH’ for AM/PM times, the days are ‘dd’ not ‘DD’, and the ‘a’ denotes that the format is in AM/PM. (I created a temporary variable to replace the table reference to test this and make certain that it works.)

  0 Comments

Sign in to comment.

More Answers (2)

KSSV
KSSV on 28 Oct 2020 at 15:06
Convert the dates you have into class of datetime using the function datetime and then you can use sort function. Read about datetime.

  0 Comments

Sign in to comment.


Steven Lord
Steven Lord on 28 Oct 2020 at 15:26
which failed, probably becasue I am not defining the AM/PM symbols.
According to the table in the description of the Format property of datetime objects include the character a in the Format and/or InputFormat values to handle AM/PM. I had to make three additional changes to your InputFormat, each prompted by a warning and/or error message.
Using HH for hours in 24-hour clock notation is incompatible with also specifying the day period (AM/PM) so I changed it to hh (hour, 12-hour clock notation.)
Using MM (month) and DD (day of year) are incompatible, so I changed DD to dd (day of month).
Lower-case ss is for seconds, upper-case S are for the digits of fractional seconds.
s = '6/29/2020 12:39:32.910 AM'
t=datetime(s,'InputFormat', 'MM/dd/yyyy hh:mm:ss.SSS a')

  0 Comments

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by