CUBRID Engine  latest
db_date.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 
20 /*
21  * db_date.h - Definitions for the date/time utilities.
22  */
23 
24 #ifndef _DB_DATE_H_
25 #define _DB_DATE_H_
26 
27 #ident "$Id$"
28 
29 #include "dbtype_def.h"
30 
31 #include <time.h>
32 
33 /* DB_DATE functions */
34 extern int db_date_weekday (DB_DATE * date);
35 extern int db_date_to_string (char *buf, int bufsize, DB_DATE * date);
36 extern bool db_string_check_explicit_date (const char *str, int str_len);
37 extern int db_string_to_date (const char *buf, DB_DATE * date);
38 extern int db_string_to_date_ex (const char *buf, int str_len, DB_DATE * date);
39 extern int db_date_parse_date (char const *str, int str_len, DB_DATE * date);
40 
41 /* DB_DATETIME functions */
42 extern int db_datetime_encode (DB_DATETIME * datetime, int month, int day, int year, int hour, int minute, int second,
43  int millisecond);
44 extern int db_datetime_decode (const DB_DATETIME * datetime, int *month, int *day, int *year, int *hour, int *minute,
45  int *second, int *millisecond);
46 extern int db_datetime_to_string (char *buf, int bufsize, DB_DATETIME * datetime);
47 extern int db_datetimetz_to_string (char *buf, int bufsize, DB_DATETIME * dt, const TZ_ID * tz_id);
48 extern int db_datetimeltz_to_string (char *buf, int bufsize, DB_DATETIME * dt);
49 extern int db_datetime_to_string2 (char *buf, int bufsize, DB_DATETIME * datetime);
50 extern int db_string_to_datetime (const char *str, DB_DATETIME * datetime);
51 extern int db_string_to_datetime_ex (const char *str, int str_len, DB_DATETIME * datetime);
52 extern int db_string_to_datetimetz (const char *str, DB_DATETIMETZ * dt_tz, bool * has_zone);
53 extern int db_string_to_datetimetz_ex (const char *str, int str_len, DB_DATETIMETZ * dt_tz, bool * has_zone);
54 extern int db_string_to_datetimeltz (const char *str, DB_DATETIME * datetime);
55 extern int db_string_to_datetimeltz_ex (const char *str, int str_len, DB_DATETIME * datetime);
56 extern int db_date_parse_datetime_parts (char const *str, int str_len, DB_DATETIME * date, bool * is_explicit_time,
57  bool * has_explicit_msec, bool * fits_as_timestamp, char const **endp);
58 extern int db_date_parse_datetime (char const *str, int str_len, DB_DATETIME * datetime);
59 extern int db_subtract_int_from_datetime (DB_DATETIME * dt1, DB_BIGINT i2, DB_DATETIME * result_datetime);
60 extern int db_add_int_to_datetime (DB_DATETIME * datetime, DB_BIGINT i2, DB_DATETIME * result_datetime);
61 /* DB_TIMESTAMP functions */
62 extern int db_timestamp_encode (DB_TIMESTAMP * utime, DB_DATE * date, DB_TIME * timeval);
63 extern int db_timestamp_encode_ses (const DB_DATE * date, const DB_TIME * timeval, DB_TIMESTAMP * utime,
64  TZ_ID * dest_tz_id);
65 extern int db_timestamp_encode_sys (const DB_DATE * date, const DB_TIME * timeval, DB_TIMESTAMP * utime,
66  TZ_ID * dest_tz_id);
67 extern int db_timestamp_encode_utc (const DB_DATE * date, const DB_TIME * timeval, DB_TIMESTAMP * utime);
68 extern int db_timestamp_decode_ses (const DB_TIMESTAMP * utime, DB_DATE * date, DB_TIME * timeval);
69 extern void db_timestamp_decode_utc (const DB_TIMESTAMP * utime, DB_DATE * date, DB_TIME * timeval);
70 extern int db_timestamp_decode_w_reg (const DB_TIMESTAMP * utime, const TZ_REGION * tz_region, DB_DATE * date,
71  DB_TIME * timeval);
72 extern int db_timestamp_decode_w_tz_id (const DB_TIMESTAMP * utime, const TZ_ID * tz_id, DB_DATE * date,
73  DB_TIME * timeval);
74 extern int db_timestamp_to_string (char *buf, int bufsize, DB_TIMESTAMP * utime);
75 extern int db_timestamptz_to_string (char *buf, int bufsize, DB_TIMESTAMP * utime, const TZ_ID * tz_id);
76 extern int db_timestampltz_to_string (char *buf, int bufsize, DB_TIMESTAMP * utime);
77 extern int db_string_to_timestamp (const char *buf, DB_TIMESTAMP * utime);
78 extern int db_string_to_timestamp_ex (const char *buf, int buf_len, DB_TIMESTAMP * utime);
79 extern int db_date_parse_timestamp (char const *str, int str_len, DB_TIMESTAMP * utime);
80 extern int db_string_to_timestamptz (const char *str, DB_TIMESTAMPTZ * ts_tz, bool * has_zone);
81 extern int db_string_to_timestamptz_ex (const char *str, int str_len, DB_TIMESTAMPTZ * ts_tz, bool * has_zone,
82  bool is_cast);
83 extern int db_string_to_timestampltz (const char *str, DB_TIMESTAMP * ts);
84 extern int db_string_to_timestampltz_ex (const char *str, int str_len, DB_TIMESTAMP * ts);
85 
86 /* DB_TIME functions */
87 extern int db_time_to_string (char *buf, int bufsize, DB_TIME * dbtime);
88 extern bool db_string_check_explicit_time (const char *str, int str_len);
89 extern int db_string_to_time (const char *buf, DB_TIME * dbtime);
90 extern int db_string_to_time_ex (const char *buf, int buf_len, DB_TIME * dbtime);
91 extern int db_date_parse_time (char const *str, int str_len, DB_TIME * time, int *milisec);
92 
93 /* Unix-like functions */
94 extern time_t db_mktime (DB_DATE * date, DB_TIME * timeval);
95 extern int db_strftime (char *s, int smax, const char *fmt, DB_DATE * date, DB_TIME * timeval);
96 extern void db_localtime (time_t * epoch_time, DB_DATE * date, DB_TIME * timeval);
97 extern void db_localdatetime (time_t * epoch_time, DB_DATETIME * datetime);
98 extern void db_localdatetime_msec (time_t * epoch_time, int millisecond, DB_DATETIME * datetime);
99 
100 
101 /* generic calculation functions */
102 extern int julian_encode (int m, int d, int y);
103 extern void julian_decode (int jul, int *monthp, int *dayp, int *yearp, int *weekp);
104 extern int day_of_week (int jul_day);
105 extern bool is_leap_year (int year);
106 extern int db_tm_encode (struct tm *c_time_struct, DB_DATE * date, DB_TIME * timeval);
107 extern int db_get_day_of_year (int year, int month, int day);
108 extern int db_get_day_of_week (int year, int month, int day);
109 extern int db_get_week_of_year (int year, int month, int day, int mode);
110 extern int db_check_time_date_format (const char *format_s);
111 extern int db_add_weeks_and_days_to_date (int *day, int *month, int *year, int weeks, int day_week);
112 
113 #endif /* _DB_DATE_H_ */
void db_localtime(time_t *epoch_time, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:1000
unsigned int TZ_ID
Definition: dbtype_def.h:756
int db_timestamp_encode_ses(const DB_DATE *date, const DB_TIME *timeval, DB_TIMESTAMP *utime, TZ_ID *dest_tz_id)
Definition: db_date.c:597
int db_check_time_date_format(const char *format_s)
Definition: db_date.c:4914
int db_tm_encode(struct tm *c_time_struct, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:536
int db_date_to_string(char *buf, int bufsize, DB_DATE *date)
Definition: db_date.c:3953
int db_add_int_to_datetime(DB_DATETIME *datetime, DB_BIGINT i2, DB_DATETIME *result_datetime)
Definition: db_date.c:4656
int db_string_to_datetimetz_ex(const char *str, int str_len, DB_DATETIMETZ *dt_tz, bool *has_zone)
Definition: db_date.c:4455
int db_get_week_of_year(int year, int month, int day, int mode)
Definition: db_date.c:4854
int db_time_to_string(char *buf, int bufsize, DB_TIME *dbtime)
Definition: db_date.c:3994
int julian_encode(int m, int d, int y)
Definition: db_date.c:113
int db_datetime_to_string(char *buf, int bufsize, DB_DATETIME *datetime)
Definition: db_date.c:4225
int db_timestamp_encode_sys(const DB_DATE *date, const DB_TIME *timeval, DB_TIMESTAMP *utime, TZ_ID *dest_tz_id)
Definition: db_date.c:617
int db_string_to_timestampltz(const char *str, DB_TIMESTAMP *ts)
Definition: db_date.c:3936
bool is_leap_year(int year)
int db_string_to_timestampltz_ex(const char *str, int str_len, DB_TIMESTAMP *ts)
Definition: db_date.c:3908
int db_string_to_datetime(const char *str, DB_DATETIME *datetime)
Definition: db_date.c:4441
int db_string_to_date(const char *buf, DB_DATE *date)
Definition: db_date.c:3693
int db_date_parse_time(char const *str, int str_len, DB_TIME *time, int *milisec)
Definition: db_date.c:2933
int db_string_to_timestamptz_ex(const char *str, int str_len, DB_TIMESTAMPTZ *ts_tz, bool *has_zone, bool is_cast)
Definition: db_date.c:3820
int db_timestamp_encode_utc(const DB_DATE *date, const DB_TIME *timeval, DB_TIMESTAMP *utime)
Definition: db_date.c:635
int db_timestamp_encode(DB_TIMESTAMP *utime, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:579
int db_add_weeks_and_days_to_date(int *day, int *month, int *year, int weeks, int day_week)
Definition: db_date.c:5009
int db_string_to_datetime_ex(const char *str, int str_len, DB_DATETIME *datetime)
Definition: db_date.c:4414
void db_localdatetime(time_t *epoch_time, DB_DATETIME *datetime)
Definition: db_date.c:1030
int db_date_weekday(DB_DATE *date)
Definition: db_date.c:321
unsigned int DB_TIMESTAMP
Definition: dbtype_def.h:759
int db_string_to_timestamptz(const char *str, DB_TIMESTAMPTZ *ts_tz, bool *has_zone)
Definition: db_date.c:3894
int db_string_to_time(const char *buf, DB_TIME *dbtime)
Definition: db_date.c:3739
int db_subtract_int_from_datetime(DB_DATETIME *dt1, DB_BIGINT i2, DB_DATETIME *result_datetime)
Definition: db_date.c:4612
void julian_decode(int jul, int *monthp, int *dayp, int *yearp, int *weekp)
Definition: db_date.c:196
void db_localdatetime_msec(time_t *epoch_time, int millisecond, DB_DATETIME *datetime)
Definition: db_date.c:1044
int db_date_parse_datetime(char const *str, int str_len, DB_DATETIME *datetime)
Definition: db_date.c:3423
int db_date_parse_timestamp(char const *str, int str_len, DB_TIMESTAMP *utime)
Definition: db_date.c:3438
int db_datetimeltz_to_string(char *buf, int bufsize, DB_DATETIME *dt)
Definition: db_date.c:4350
static enum scanner_mode mode
int db_timestamp_decode_w_reg(const DB_TIMESTAMP *utime, const TZ_REGION *tz_region, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:828
int db_timestamp_decode_w_tz_id(const DB_TIMESTAMP *utime, const TZ_ID *tz_id, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:902
int db_timestamptz_to_string(char *buf, int bufsize, DB_TIMESTAMP *utime, const TZ_ID *tz_id)
Definition: db_date.c:4090
int db_timestamp_decode_ses(const DB_TIMESTAMP *utime, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:764
bool db_string_check_explicit_time(const char *str, int str_len)
Definition: db_date.c:1331
int db_string_to_time_ex(const char *buf, int buf_len, DB_TIME *dbtime)
Definition: db_date.c:3708
int db_datetime_decode(const DB_DATETIME *datetime, int *month, int *day, int *year, int *hour, int *minute, int *second, int *millisecond)
Definition: db_date.c:4574
int db_date_parse_date(char const *str, int str_len, DB_DATE *date)
Definition: db_date.c:3481
int64_t DB_BIGINT
Definition: dbtype_def.h:751
int db_get_day_of_week(int year, int month, int day)
Definition: db_date.c:4723
int db_datetime_encode(DB_DATETIME *datetime, int month, int day, int year, int hour, int minute, int second, int millisecond)
Definition: db_date.c:4597
int db_timestampltz_to_string(char *buf, int bufsize, DB_TIMESTAMP *utime)
Definition: db_date.c:4146
unsigned int DB_TIME
Definition: dbtype_def.h:754
unsigned int DB_DATE
Definition: dbtype_def.h:771
int db_date_parse_datetime_parts(char const *str, int str_len, DB_DATETIME *date, bool *is_explicit_time, bool *has_explicit_msec, bool *fits_as_timestamp, char const **endp)
Definition: db_date.c:3176
int db_string_to_timestamp_ex(const char *buf, int buf_len, DB_TIMESTAMP *utime)
Definition: db_date.c:3755
int db_string_to_datetimeltz_ex(const char *str, int str_len, DB_DATETIME *datetime)
Definition: db_date.c:4533
int db_string_to_datetimetz(const char *str, DB_DATETIMETZ *dt_tz, bool *has_zone)
Definition: db_date.c:4520
int db_get_day_of_year(int year, int month, int day)
Definition: db_date.c:4697
int db_datetimetz_to_string(char *buf, int bufsize, DB_DATETIME *dt, const TZ_ID *tz_id)
Definition: db_date.c:4302
void db_timestamp_decode_utc(const DB_TIMESTAMP *utime, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:781
int db_timestamp_to_string(char *buf, int bufsize, DB_TIMESTAMP *utime)
Definition: db_date.c:4054
int db_string_to_datetimeltz(const char *str, DB_DATETIME *datetime)
Definition: db_date.c:4555
int db_string_to_date_ex(const char *buf, int str_len, DB_DATE *date)
Definition: db_date.c:3661
bool db_string_check_explicit_date(const char *str, int str_len)
Definition: db_date.c:3629
int db_strftime(char *s, int smax, const char *fmt, DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:973
int db_string_to_timestamp(const char *buf, DB_TIMESTAMP *utime)
Definition: db_date.c:3802
int db_datetime_to_string2(char *buf, int bufsize, DB_DATETIME *datetime)
Definition: db_date.c:4375
int day_of_week(int jul_day)
Definition: db_date.c:176
time_t db_mktime(DB_DATE *date, DB_TIME *timeval)
Definition: db_date.c:557