~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/function/time/date.cc

  • Committer: Brian Aker
  • Date: 2009-02-18 19:27:32 UTC
  • mfrom: (873.1.17 temporal-new)
  • Revision ID: brian@tangent.org-20090218192732-ype4iscybtftjk2y
Merge Jay

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
18
 */
19
19
 
20
 
#include <drizzled/server_includes.h>
 
20
#include "drizzled/server_includes.h"
21
21
#include CSTDINT_H
22
 
#include <drizzled/function/time/date.h>
 
22
#include "drizzled/function/time/date.h"
 
23
#include "drizzled/temporal.h"
23
24
 
24
25
String *Item_date::val_str(String *str)
25
26
{
26
 
  assert(fixed == 1);
27
 
  DRIZZLE_TIME ltime;
28
 
  if (get_date(&ltime, TIME_FUZZY_DATE))
29
 
    return (String *) 0;
 
27
  assert(fixed);
 
28
 
 
29
  /* We have our subclass convert a Date temporal for us */
 
30
  drizzled::Date temporal;
 
31
  if (! get_temporal(temporal))
 
32
    return (String *) NULL; /* get_temporal throws error. */
 
33
 
30
34
  if (str->alloc(MAX_DATE_STRING_REP_LENGTH))
31
35
  {
32
 
    null_value= 1;
33
 
    return (String *) 0;
 
36
    null_value= true;
 
37
    return (String *) NULL;
34
38
  }
35
 
  make_date((DATE_TIME_FORMAT *) 0, &ltime, str);
 
39
 
 
40
  /* Convert the Date to a string and return it */
 
41
  size_t new_length;
 
42
  temporal.to_string(str->c_ptr(), &new_length);
 
43
  str->length((uint32_t) new_length);
36
44
  return str;
37
45
}
38
46
 
39
 
 
40
47
int64_t Item_date::val_int()
41
48
{
42
 
  assert(fixed == 1);
43
 
  DRIZZLE_TIME ltime;
44
 
  if (get_date(&ltime, TIME_FUZZY_DATE))
45
 
    return 0;
46
 
  return (int64_t) (ltime.year*10000L+ltime.month*100+ltime.day);
 
49
  assert(fixed);
 
50
 
 
51
  /* We have our subclass convert a Date temporal for us */
 
52
  drizzled::Date temporal;
 
53
  if (! get_temporal(temporal))
 
54
    return 0; /* get_temporal throws error. */
 
55
 
 
56
  /* Convert the Date to a string and return it */
 
57
  int32_t int_value;
 
58
  temporal.to_int32_t(&int_value);
 
59
  return (int64_t) int_value;
47
60
}
48