Date and Time functions

The following list contains the functions that you can use to calculate dates and time.

For information about using string and numeric fields in functions, and nesting functions, see Evaluation functions.

In addition to the functions listed in this topic, there are also variables and modifiers that you can use in searches.

now()

Description

This function takes no arguments and returns the time that the search was started.

Usage

The now() function is often used with other data and time functions.

The time returned by the now() function is represented in UNIX time, or in seconds since Epoch time.

When used in a search, this function returns the UNIX time when the search is run. If you want to return the UNIX time when each result is returned, use the time() function instead.

You can use this function with the eval, fieldformat, and where commands, and as part of eval expressions.

Basic example

The following example determines the UNIX time value of the start of yesterday, based on the value of now(). This example uses a "snap-to" time modifier to snap to the start of the day. See How to specify relative time modifiers.

Extended example

If you are looking for events that occurred within the last 30 minutes you need to calculate the event hour, event minute, the current hour, and the current minute. You use the now() function to calculate the current hour (curHour) and current minute (curMin). The event timestamp, in the _time field, is used to calculate the event hour (eventHour) and event minute (eventMin). For example:

relative_time(<time>,<specifier>)

Description

This function takes a UNIX time as the first argument and a relative time specifier as the second argument and returns the UNIX time value of <specifier> applied to <time>.

Usage

You can use this function with the eval, fieldformat, and where commands, and as part of eval expressions.

Basic examples

The following example determines the UNIX time value of the start of yesterday, based on the value of now(). This example uses a "snap-to" time modifier to snap to the the start of the day. See How to specify relative time modifiers.

The following example specifies an earliest time of 2 hours ago snapped to the hour and a latest time of 1 hour ago snapped to the hour. The offset -2h is processed first, followed by the snap-to time @h.

strftime(<time>,<format>)

Description

This function takes a UNIX time value as the first argument and renders the time as a string using the format specified. The UNIX time must be in seconds. Use the first 10 digits of a UNIX time to use the time in seconds.

You can use time format variables with the strftime function. For a complete list and descriptions of the format options, see Date and time format variables.

Usage

If the time is in milliseconds, microseconds, or nanoseconds you must convert the time into seconds. You can use the pow function to convert the number.

  • To convert from milliseconds to seconds, divide the number by 1000 or 10^3.
  • To convert from microseconds to seconds, divide the number by 10^6.
  • To convert from nanoseconds to seconds, divide the number by 10^9.

The following search uses the pow function to convert from nanoseconds to seconds:

The results appear on the Statistics tab and look like this:

In these results, the _time value is the date and time when the search was run.

You can use this function with the eval, fieldformat, and where commands, and as part of eval expressions.

Basic examples

The following example returns the hour and minute from the _time field.

If the _time field value is 2022-08-10 11:48:23, the value returned in the hour_min field is 11:48.

The following example creates a new field called starttime in your search results. For the strftimevalues, the now() function is used to generate the current UNIX time and date and time variables are used to specify the ISO 8601 timestamp format;

The results look something like this:

For more information about date and time variables, see Date and time format variables.

Extended example

The following example creates a single result using the makeresults command.

For example:

The _time field is stored in UNIX time, even though it displays in a human readable format. To convert the UNIX time to some other format, you use the strftime function with the date and time format variables. The variables must be in quotations marks.

For example, to return the week of the year that an event occurred in, use the %V variable.

The results show that August 14th occurred in week 33.

To return the date and time with subseconds and the time designator (the letter T) that precedes the time components of the format, use the %Y-%m-%dT%H:%M:%S.%Q variables. For example:

The results are:

strptime(<str>,<format>)

Description

This function takes a time represented by a string and parses the time into a UNIX timestamp format. You use date and time variables to specify the format that matches string. For a complete list and descriptions of the variables, see Date and time format variables.

The strptime function doesn't work with timestamps that consist of only a month and year. The timestamps must include a day.

For example, if string X is 2022-08-13 11:22:33, the format Y must be %Y-%m-%d %H:%M:%S . The string X date must be January 1, 1971 or later. The strptime function takes any date from January 1, 1971 or later, and calculates the UNIX time, in seconds, from January 1, 1970 to the date you provide.

Note: The _time field is in UNIX time. In Splunk Web, the _time field appears in a human readable format in the UI but is stored in UNIX time. If you attempt to use the strptime function on the _time field, no action is performed on the values in the field.

Usage

With the strptime function, you must specify the time format of the string so that the function can convert the string time into the correct UNIX time. The following table shows some examples:

String time Matching time format variables
Mon July 23 2022 17:19:01.89 %a %B %d %Y %H:%M:%S.%N
Mon 7/23/2022 17:19:01.89 %a %m/%d/%Y %H:%M:%S.%N
2022/07/23 17:19:01.89 %Y/%m/%d %H:%M:%S.%N
2022-07-23T17:19:01.89 %Y-%m-%dT%H:%M:%S.%N

You can use this function with the eval, fieldformat, and where commands, and as part of eval expressions.

Basic example

If the values in the timeStr field are hours and minutes, such as 11:59, the following example returns the time as a timestamp:

Extended example

This example shows the results of using the strptime function. The following search does several things:

  • The gentimes command generates a set of times with 6 hour intervals. This command returns four fields: startime, starthuman, endtime, and endhuman.
  • The fields command returns only the starthuman and endhuman fields.
  • The eval command takes the string time values in the starthuman field and returns the UNIX time that corresponds to the string time values.

The results appear on the Statistics tab and look something like this:

time()

Description

This function returns the wall-clock time, in the UNIX time format, with microsecond resolution.

Usage

The value of the time() function will be different for each event, based on when that event was processed by the eval command.

You can use this function with the eval, fieldformat, and where commands, and as part of eval expressions.

Basic example

This example shows the results of using the time() function. The following search does several things:

  • The gentimes command generates a set of times with 6 hour intervals. This command returns four fields: startime, starthuman, endtime, and endhuman.
  • The fields command returns only the startime and starthuman fields.
  • The first eval command takes the numbers in the starttime field and returns them with microseconds included.
  • The second eval command creates the testtime field and returns the UNIX time at the instant the result was processed by the eval command.

The results appear on the Statistics tab and look something like this:

Notice the difference in the microseconds between the values in the epoch_time and test_time fields. You can see that the test_time values increase with each result.