85 lines
2 KiB
C
85 lines
2 KiB
C
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// (c) 2000-2001 by Microsoft Corp. All Rights Reserved.
|
||
|
//
|
||
|
// datepart.h
|
||
|
//
|
||
|
// a-davcoo 28-Feb-00 Implements the SQL datepart operation.
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
|
||
|
#ifndef _DATEPART_H_
|
||
|
#define _DATEPART_H_
|
||
|
|
||
|
|
||
|
#include <strutils.h>
|
||
|
#include <datetimeparser.h>
|
||
|
|
||
|
|
||
|
#define DATEPART_YEAR 1 // "yy", "year"
|
||
|
#define DATEPART_MONTH 3 // "mm", "month"
|
||
|
#define DATEPART_DAY 5 // "dd", "day"
|
||
|
#define DATEPART_HOUR 8 // "hh", "hour"
|
||
|
#define DATEPART_MINUTE 9 // "mi", "minute"
|
||
|
#define DATEPART_SECOND 10 // "ss", "second"
|
||
|
#define DATEPART_MILLISECOND 11 // "ms", "millisecond"
|
||
|
|
||
|
|
||
|
class CDMTFParser;
|
||
|
|
||
|
|
||
|
// The CDatePart class implements the SQL "datepart" operation. To use
|
||
|
// this class, construct an instance, supplying the date string you wish
|
||
|
// to parse. Then use the GetPart() method to extract the specified part.
|
||
|
// Contants for the "parts" are presented above. The class makes it's own
|
||
|
// copy of the date string supplied during construction.
|
||
|
class POLARITY CDatePart
|
||
|
{
|
||
|
public:
|
||
|
CDatePart ();
|
||
|
~CDatePart ();
|
||
|
|
||
|
HRESULT SetDate (LPCWSTR lpDate);
|
||
|
HRESULT SetDate (LPCSTR lpDate);
|
||
|
HRESULT GetPart (int datepart, int *value);
|
||
|
|
||
|
protected:
|
||
|
CDMTFParser *m_date;
|
||
|
};
|
||
|
|
||
|
|
||
|
class POLARITY CDMTFParser
|
||
|
{
|
||
|
public:
|
||
|
enum {YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MICROSECOND, OFFSET};
|
||
|
|
||
|
CDMTFParser (LPCWSTR date);
|
||
|
~CDMTFParser (void);
|
||
|
|
||
|
bool IsValid (void);
|
||
|
bool IsInterval (void);
|
||
|
|
||
|
bool IsUsed (int part);
|
||
|
bool IsWildcard (int part);
|
||
|
int GetValue (int part);
|
||
|
|
||
|
protected:
|
||
|
enum {INVALID=0x0, VALID=0x1, NOTSUPPLIED=0x2, NOTUSED=0x4};
|
||
|
enum {NUMPARTS=8};
|
||
|
|
||
|
bool m_valid;
|
||
|
bool m_interval;
|
||
|
|
||
|
int m_status[NUMPARTS];
|
||
|
int m_part[NUMPARTS];
|
||
|
|
||
|
void ParseDate (LPCWSTR date);
|
||
|
void ParseInterval (LPCWSTR date);
|
||
|
void ParseAbsolute (LPCWSTR date);
|
||
|
int ParsePart (LPCWSTR date, int pos, int length, int *result, int min, int max);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // _DATEPART_H_
|