XROAD
xroad_date.h File Reference
#include "xroad_common_fwd.h"
#include <common/xroad_time.h>
#include <time.h>
Include dependency graph for xroad_date.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xroad_date_t
 

Macros

#define xroad_date_null   (xroad_date_t){0}
 
#define xroad_date_to_str(dt)
 
#define xroad_date_to_sql(v)
 

Functions

xroad_date_t xroad_date_create (uint16_t year, uint8_t month, uint8_t day)
 
bool xroad_date_is_null (xroad_date_t data)
 
xroad_date_t xroad_date_from_int (int32_t date)
 
int32_t xroad_date_to_int (xroad_date_t date, bool short_year)
 
xroad_date_t xroad_date_from_ts (xroad_timestamp_t ts)
 
xroad_timestamp_t xroad_date_to_ts (xroad_date_t date)
 
xroad_date_t xroad_date_from_tm (struct tm *tm)
 
xroad_date_t xroad_date_from_str (xroad_str_t date)
 
xroad_date_t xroad_date_adjust (xroad_date_t dt, int32_t day)
 
int32_t xroad_date_cmp (xroad_date_t dt1, xroad_date_t dt2)
 
xroad_date_t xroad_date_min (xroad_date_t dt1, xroad_date_t dt2)
 
xroad_date_t xroad_date_max (xroad_date_t dt1, xroad_date_t dt2)
 
uint32_t xroad_date_day_of_year ()
 

Detailed Description

Author
Danil Krivopustov

Macro Definition Documentation

◆ xroad_date_to_sql

#define xroad_date_to_sql (   v)
Value:
({ \
char* buf = "NULL"; \
uint32_t len = 4; \
xroad_date_t dt = (v); \
if (!xroad_date_is_null(dt)) \
{ \
xroad_str_t s = xroad_date_to_str(dt); \
buf = alloca(s.len + 2); \
buf[0] = '\''; \
memcpy(buf + 1, s.data, s.len); \
buf[s.len + 1] = '\''; \
len = s.len + 2; \
} \
xroad_str_len(buf, len); \
})
bool xroad_date_is_null(xroad_date_t data)
#define xroad_date_to_str(dt)
Definition: xroad_date.h:103

convert xroad_date_t to SQL string representation (NULL, '2020-01-01')

Parameters
[in]v- date to convert
Returns
SQL string

◆ xroad_date_to_str

#define xroad_date_to_str (   dt)
Value:
({ \
char* buff = alloca(11); \
int32_t s = xroad_format(buff, 11, "%04d-%02d-%02d", dt.year, dt.month, dt.day); \
xroad_str_len(buff, s); \
})
int32_t xroad_format(char *buf, uint32_t len, const char *fmt,...)

convert date to string representation

Parameters
[in]dt- date to convert
Returns
string representation

Function Documentation

◆ xroad_date_adjust()

xroad_date_t xroad_date_adjust ( xroad_date_t  dt,
int32_t  day 
)

adjust date to N days

Parameters
[in]dt- date to adjust
[in]day- days to adjust (can be negative)
Returns
adjusted date

◆ xroad_date_cmp()

int32_t xroad_date_cmp ( xroad_date_t  dt1,
xroad_date_t  dt2 
)

compare two dates

Parameters
[in]dt1- first date to compare
[in]dt2- seconds date to compare
Returns
0, -1 or 1

◆ xroad_date_create()

xroad_date_t xroad_date_create ( uint16_t  year,
uint8_t  month,
uint8_t  day 
)

create date

Returns
xroad_date_t

◆ xroad_date_day_of_year()

uint32_t xroad_date_day_of_year ( )
Returns
current day of year (1-365)

◆ xroad_date_from_int()

xroad_date_t xroad_date_from_int ( int32_t  date)

convert date represented as int YYYYMMDD (e.g. 20180801) to xroad_date_t struct

Parameters
[in]date- integer date representation
Returns
xroad_date_t struct

◆ xroad_date_from_str()

xroad_date_t xroad_date_from_str ( xroad_str_t  date)

convert string date YYYY-MM-DD to xroad_date_t struct

Parameters
[in]date- date in string
Returns
xroad_date_t struct

◆ xroad_date_from_tm()

xroad_date_t xroad_date_from_tm ( struct tm *  tm)

convert tm struct to date

Parameters
[in]tm- struct to convert
Returns
xroad_date_t struct

◆ xroad_date_from_ts()

xroad_date_t xroad_date_from_ts ( xroad_timestamp_t  ts)

extract date from timestamp in microseconds

Parameters
[in]ts- timestamp
Returns
xroad_date_t struct

◆ xroad_date_is_null()

bool xroad_date_is_null ( xroad_date_t  data)

check if date is null

Parameters
[in]dt- date to check
Returns
true if date is null, else false

◆ xroad_date_max()

xroad_date_t xroad_date_max ( xroad_date_t  dt1,
xroad_date_t  dt2 
)

select maximum date among dt1, dt2

Parameters
[in]dt1- first date
[in]dt2- second date
Returns
maximum date

◆ xroad_date_min()

xroad_date_t xroad_date_min ( xroad_date_t  dt1,
xroad_date_t  dt2 
)

select minimum date among dt1, dt2

Parameters
[in]dt1- first date
[in]dt2- second date
Returns
minimum date

◆ xroad_date_to_int()

int32_t xroad_date_to_int ( xroad_date_t  date,
bool  short_year 
)

convert date to int32 like YYYYMMDD

Parameters
[in]date- date to convert #param[in] short_year - will generate YYMMDD, instead of full YYYYMMDD
Returns
int32 date

◆ xroad_date_to_ts()

xroad_timestamp_t xroad_date_to_ts ( xroad_date_t  date)

convert date to timestamp in microseconds

Parameters
[in]date- date to convert
Returns
timestamp value