import { type SQL, type AnyColumn } from "drizzle-orm"; /** * TiDB / MySQL date and time expressions for Drizzle `sql` fragments. * @see https://docs.pingcap.com/tidb/stable/date-and-time-functions * * TiDB does not implement every `STR_TO_DATE` / `DATE_FORMAT` pattern from MySQL (for example some week/day specifiers); see TiDB docs and issue #30082. */ export type DateSqlInput = SQL | AnyColumn | string | number | boolean; /** `INTERVAL expr unit` — `unit` is emitted as a SQL keyword (trusted, not user input). */ export type MysqlIntervalUnit = "MICROSECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY" | "WEEK" | "MONTH" | "QUARTER" | "YEAR" | "SECOND_MICROSECOND" | "MINUTE_MICROSECOND" | "MINUTE_SECOND" | "HOUR_MICROSECOND" | "HOUR_SECOND" | "HOUR_MINUTE" | "DAY_MICROSECOND" | "DAY_SECOND" | "DAY_MINUTE" | "DAY_HOUR" | "YEAR_MONTH"; /** First argument to `TIMESTAMPADD` / `TIMESTAMPDIFF` (keyword). */ export type TimestampUnit = "MICROSECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY" | "WEEK" | "MONTH" | "QUARTER" | "YEAR"; export type GetFormatLocale = "USA" | "JIS" | "ISO" | "EUR" | "INTERNAL"; export type GetFormatType = "DATE" | "DATETIME" | "TIME"; /** `INTERVAL expr unit` fragment for use inside `DATE_ADD` / raw SQL. */ export declare function interval(value: DateSqlInput, unit: MysqlIntervalUnit): SQL; /** `ADDDATE(date, days)` or `ADDDATE(date, INTERVAL expr unit)` */ export declare function addDate(date: DateSqlInput, a: DateSqlInput, b?: MysqlIntervalUnit): SQL; /** `ADDTIME(expr1, expr2)` */ export declare function addTime(expr1: DateSqlInput, expr2: DateSqlInput): SQL; /** `CONVERT_TZ(dt, from_tz, to_tz)` */ export declare function convertTz(dt: DateSqlInput, fromTz: DateSqlInput, toTz: DateSqlInput): SQL; /** `CURDATE()` */ export declare function curdate(): SQL; /** `CURRENT_DATE()` — synonym for `CURDATE()` */ export declare function currentDate(): SQL; /** `CURRENT_TIME([fsp])` */ export declare function currentTime(fsp?: DateSqlInput): SQL; /** `CURRENT_TIMESTAMP([fsp])` — synonym for `NOW()` */ export declare function currentTimestamp(fsp?: DateSqlInput): SQL; /** `CURTIME([fsp])` */ export declare function curtime(fsp?: DateSqlInput): SQL; /** `DATE(expr)` */ export declare function dateOf(expr: DateSqlInput): SQL; /** `DATE_ADD(date, INTERVAL expr unit)` */ export declare function dateAdd(date: DateSqlInput, value: DateSqlInput, unit: MysqlIntervalUnit): SQL; /** `DATE_FORMAT(date, format)` */ export declare function dateFormat(date: DateSqlInput, format: DateSqlInput): SQL; /** `DATE_SUB(date, INTERVAL expr unit)` */ export declare function dateSub(date: DateSqlInput, value: DateSqlInput, unit: MysqlIntervalUnit): SQL; /** `DATEDIFF(expr1, expr2)` */ export declare function dateDiff(expr1: DateSqlInput, expr2: DateSqlInput): SQL; /** `DAY(expr)` — synonym for `DAYOFMONTH()` */ export declare function day(expr: DateSqlInput): SQL; /** `DAYNAME(expr)` */ export declare function dayName(expr: DateSqlInput): SQL; /** `DAYOFMONTH(expr)` */ export declare function dayOfMonth(expr: DateSqlInput): SQL; /** `DAYOFWEEK(expr)` */ export declare function dayOfWeek(expr: DateSqlInput): SQL; /** `DAYOFYEAR(expr)` */ export declare function dayOfYear(expr: DateSqlInput): SQL; /** `EXTRACT(unit FROM expr)` */ export declare function extract(unit: MysqlIntervalUnit, expr: DateSqlInput): SQL; /** `FROM_DAYS(days)` */ export declare function fromDays(days: DateSqlInput): SQL; /** `FROM_UNIXTIME(unix_timestamp [, format])` */ export declare function fromUnixtime(ts: DateSqlInput, format?: DateSqlInput): SQL; /** `GET_FORMAT(locale, type)` */ export declare function getFormat(locale: GetFormatLocale, type: GetFormatType): SQL; /** `HOUR(expr)` */ export declare function hour(expr: DateSqlInput): SQL; /** `LAST_DAY(expr)` */ export declare function lastDay(expr: DateSqlInput): SQL; /** `LOCALTIME([fsp])` — synonym for `NOW()` */ export declare function localTime(fsp?: DateSqlInput): SQL; /** `LOCALTIMESTAMP([fsp])` — synonym for `NOW()` */ export declare function localTimestamp(fsp?: DateSqlInput): SQL; /** `MAKEDATE(year, dayofyear)` */ export declare function makeDate(year: DateSqlInput, dayOfYear: DateSqlInput): SQL; /** `MAKETIME(hour, minute, second)` */ export declare function makeTime(hour: DateSqlInput, minute: DateSqlInput, second: DateSqlInput): SQL; /** `MICROSECOND(expr)` */ export declare function microsecond(expr: DateSqlInput): SQL; /** `MINUTE(expr)` */ export declare function minute(expr: DateSqlInput): SQL; /** `MONTH(expr)` */ export declare function month(expr: DateSqlInput): SQL; /** `MONTHNAME(expr)` */ export declare function monthName(expr: DateSqlInput): SQL; /** `NOW([fsp])` */ export declare function now(fsp?: DateSqlInput): SQL; /** `PERIOD_ADD(period, months)` */ export declare function periodAdd(period: DateSqlInput, months: DateSqlInput): SQL; /** `PERIOD_DIFF(p1, p2)` */ export declare function periodDiff(p1: DateSqlInput, p2: DateSqlInput): SQL; /** `QUARTER(expr)` */ export declare function quarter(expr: DateSqlInput): SQL; /** `SEC_TO_TIME(seconds)` */ export declare function secToTime(seconds: DateSqlInput): SQL; /** `SECOND(expr)` */ export declare function second(expr: DateSqlInput): SQL; /** `STR_TO_DATE(str, format)` */ export declare function strToDate(str: DateSqlInput, format: DateSqlInput): SQL; /** `SUBDATE(date, days)` or `SUBDATE(date, INTERVAL expr unit)` */ export declare function subDate(date: DateSqlInput, a: DateSqlInput, b?: MysqlIntervalUnit): SQL; /** `SUBTIME(expr1, expr2)` */ export declare function subTime(expr1: DateSqlInput, expr2: DateSqlInput): SQL; /** `SYSDATE([fsp])` */ export declare function sysdate(fsp?: DateSqlInput): SQL; /** `TIME(expr)` */ export declare function timeOf(expr: DateSqlInput): SQL; /** `TIME_FORMAT(time, format)` */ export declare function timeFormat(time: DateSqlInput, format: DateSqlInput): SQL; /** `TIME_TO_SEC(time)` */ export declare function timeToSec(time: DateSqlInput): SQL; /** `TIMEDIFF(expr1, expr2)` */ export declare function timeDiff(expr1: DateSqlInput, expr2: DateSqlInput): SQL; /** `TIMESTAMP(expr)` or `TIMESTAMP(expr1, expr2)` */ export declare function timestampExpr(a: DateSqlInput, b?: DateSqlInput): SQL; /** `TIMESTAMPADD(unit, interval, datetime_expr)` */ export declare function timestampAdd(unit: TimestampUnit, interval: DateSqlInput, datetimeExpr: DateSqlInput): SQL; /** `TIMESTAMPDIFF(unit, expr1, expr2)` */ export declare function timestampDiff(unit: TimestampUnit, expr1: DateSqlInput, expr2: DateSqlInput): SQL; /** `TO_DAYS(date)` */ export declare function toDays(date: DateSqlInput): SQL; /** `TO_SECONDS(expr)` */ export declare function toSeconds(expr: DateSqlInput): SQL; /** `UNIX_TIMESTAMP([date])` */ export declare function unixTimestamp(date?: DateSqlInput): SQL; /** `UTC_DATE()` */ export declare function utcDate(): SQL; /** `UTC_TIME([fsp])` */ export declare function utcTime(fsp?: DateSqlInput): SQL; /** `UTC_TIMESTAMP([fsp])` */ export declare function utcTimestamp(fsp?: DateSqlInput): SQL; /** `WEEK(date [, mode])` */ export declare function week(date: DateSqlInput, mode?: DateSqlInput): SQL; /** `WEEKDAY(date)` */ export declare function weekDay(date: DateSqlInput): SQL; /** `WEEKOFYEAR(date)` */ export declare function weekOfYear(date: DateSqlInput): SQL; /** `YEAR(date)` */ export declare function year(date: DateSqlInput): SQL; /** `YEARWEEK(date [, mode])` */ export declare function yearWeek(date: DateSqlInput, mode?: DateSqlInput): SQL; //# sourceMappingURL=DateTiDB.d.ts.map