1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008-2009 Sun Microsystems
4
* Copyright (C) 2008-2009 Sun Microsystems, Inc.
6
6
* This program is free software; you can redistribute it and/or modify
7
7
* it under the terms of the GNU General Public License as published by
20
20
#ifndef DRIZZLED_TIME_FUNCTIONS_H
21
21
#define DRIZZLED_TIME_FUNCTIONS_H
23
#include "drizzled/sql_error.h"
24
#include "drizzled/drizzle_time.h"
23
#include <drizzled/sql_error.h>
24
#include <drizzled/type/time.h>
29
typedef struct st_drizzle_time DRIZZLE_TIME;
31
28
/* Calc weekday from daynr */
32
29
/* Returns 0 for monday, 1 for tuesday .... */
33
30
int calc_weekday(long daynr, bool sunday_first_day_of_week);
60
57
Otherwise it is the last week of the previous year, and the
61
58
next week is week 1.
63
uint32_t calc_week(DRIZZLE_TIME *l_time, uint32_t week_behaviour, uint32_t *year);
60
uint32_t calc_week(type::Time *l_time, uint32_t week_behaviour, uint32_t *year);
65
62
/* Change a daynr to year, month and day */
66
63
/* Daynr 0 is returned as date 00.00.00 */
73
Convert a timestamp string to a DRIZZLE_TIME value and produce a warning
70
Convert a timestamp string to a type::Time value and produce a warning
74
71
if string was truncated during conversion.
77
74
See description of str_to_datetime() for more information.
79
enum enum_drizzle_timestamp_type str_to_datetime_with_warn(const char *str,
76
type::timestamp_t str_to_datetime_with_warn(Session *session,
85
Convert a time string to a DRIZZLE_TIME struct and produce a warning
83
Convert a time string to a type::Time struct and produce a warning
86
84
if string was cut during conversion.
89
87
See str_to_time() for more info.
91
bool str_to_time_with_warn(const char *str, uint32_t length, DRIZZLE_TIME *l_time);
94
Convert a system time structure to TIME
96
void localtime_to_TIME(DRIZZLE_TIME *to, struct tm *from);
98
void make_date(const DRIZZLE_TIME *l_time, String *str);
100
void make_datetime(const DRIZZLE_TIME *l_time, String *str);
89
bool str_to_time_with_warn(Session *session, const char *str, uint32_t length, type::Time *l_time);
102
91
void make_truncated_value_warning(Session *session,
103
92
DRIZZLE_ERROR::enum_warning_level level,
104
93
const char *str_val,
105
94
uint32_t str_length,
106
enum enum_drizzle_timestamp_type time_type,
95
type::timestamp_t time_type,
107
96
const char *field_name);
124
113
This function calculates difference between l_time1 and l_time2 absolute
125
114
values. So one should set l_sign and correct result if he want to take
126
signs into account (i.e. for DRIZZLE_TIME values).
115
signs into account (i.e. for type::Time values).
129
118
Returns sign of difference.