#include "pg_bikram_sambat.h" /* parses BSDateADTi date string (cstring) and returns the internal Julian representation */ BSDateADT parse_bs_date_internal(const char *str) { int year, month, day; int found; DateParts adDate; found = sscanf(str, "%d/%d/%d", &year, &month, &day); if (found != 3) found = sscanf(str, "%d-%d-%d", &year, &month, &day); if (found != 3) found = sscanf(str, "%d.%d.%d", &year, &month, &day); if (found != 3) { ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("invalid input syntax for bs_date: \"%s\"", str), errhint("Use YYYY/MM/DD or DD/MM/YYYY. Valid separators are /, -, and ."))); } /* swap year and day if day is bigger than 1000 and year is lower than 1000 */ if (year < 1000 && day >= 1000) { int temp = year; year = day; day = temp; } adDate = bsToAd(year, month, day); return date2j(adDate.year, adDate.month, adDate.day) - POSTGRES_EPOCH_JDATE; }