Type | Aliases |
---|---|
bool |
boolean , bit |
i8 |
int8 , tinyint |
i16 |
int16 , smallint |
i32 |
int32 , integer , int |
i64 |
int64 , bigint |
u8 |
uint8 , tinyint unsigned |
u16 |
uint16 , smallint unsigned |
u32 |
uint32 , unsigned, integer unsigned, int unsigned |
u64 |
uint64 , bigint unsigned |
f32 |
float32 , single , float , real |
f64 |
float64 , double , double precision |
ts |
timestamp |
tp |
timeperiod , period |
epoch |
unixepoch |
i8range |
int8range , ri8 , rint8 |
i16range |
int16range , ri16 , rint16 |
i32range |
int32range , ri32 , rint32 |
i64range |
int64range , ri64 , rint64 |
u8range |
uint8range , ru8 , ruint8 |
u16range |
uint16range , ru16 , ruint16 |
u32range |
uint32range , ru32 , ruint32 |
u64range |
uint64range , ru64 , ruint64 |
f32range |
float32range , rf32 , rfloat32 |
f64range |
float64range , rf64 , rfloat64 |
tsrange |
timestamprange , rts , rtimestamp |
epochrange |
unixepochrange , repoch , runixepoch |
str |
string , text , varchar , char |
bstr |
bstring , bytea , varbinary , binary , blob |
symbol |
sym , symbol64 , sym64 |
bsymbol |
bsym , bsymbol64 , bsym64 |
line |
linestring |
mpoint |
multipoint |
mline |
multiline , mlinestring , multilinestring |
mpolygon |
multipolygon |
gpoint |
geopoint , geogpoint |
gline |
geoline , geogline , glinestring , geolinestring , geoglinestring |
gpolygon |
geopolygon , geogpolygon |
gmpoint |
geompoint , geogmpoint , gmultipoint , geomultipoint , geogmultipoint |
gmline |
gmlinestring , gmultiline , gmultilinestring , geomline , geomlinestring , geomultiline , geomultilinestring , geogmline , geogmlinestring , geogmultiline , geogmultilinestring |
gmpolygon |
geompolygon , geogmpolygon , gmultipolygon , geomultipolygon , geogmultipolygon |
The following are tables showing all the type conversion available in the MSQL language.
From/To | bool |
Integral | Floating | text |
binary |
Numeric range | timestamp |
unixepoch |
timeperiod |
rtimestamp |
runixepoch |
Geometric | Geographic |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bool |
- | - | - | explicit | - | - | - | - | - | - | - | - | - |
Integral | - | implicit1 | implicit2 | explicit | - | - | explicit | explicit | explicit | - | - | - | - |
Floating | - | implicit3 | explicit | - | - | explicit | explicit | explicit | - | - | - | - | |
text |
explicit | explicit | explicit | - | explicit4 | - | explicit | explicit | explicit | explicit | explicit | explicit | explicit |
binary |
- | - | - | explicit4 | - | - | - | - | - | - | - | explicit | explicit |
Numeric range | - | - | - | - | - | explicit5 | - | - | - | - | - | - | - |
timestamp |
- | explicit | explicit | explicit | - | - | - | explicit6 | - | - | - | - | - |
unixepoch |
- | explicit | explicit | explicit | - | - | implicit6 | - | - | - | - | - | - |
timeperiod |
- | explicit | explicit | explicit | - | - | - | - | - | - | - | - | - |
rtimestamp |
- | - | - | explicit | - | explicit | - | - | - | - | explicit | - | - |
runixepoch |
- | - | - | explicit | - | explicit | - | - | - | explicit | - | - | - |
Geometric | - | - | - | explicit | explicit | - | - | - | - | - | - | - | explicit7 |
Geographic | - | - | - | explicit | explicit | - | - | - | - | - | - | explicit7 | - |
[1]: In operator and function calls, all integral arguments are always implicitly upcasted to the int64
type.
[2]: In operator and function calls where floating-point arguments are expected, the integer arguments are also accepted and implicitly upcasted to float64
.
[3]: In operator and function calls, all floating-point arguments are always implicitly upcasted to the float64
type.
[4]: Byte sequences are converted to/from their hexadecimal representation (e.g. a string of hexadecimal digits).
[5]: Refers to conversion between different range types.
[6]: In operator and function calls, unixepoch
arguments are implicitly upcasted to the timestamp
type.
[7]: Conversion is possible only between corresponding kinds of geometric and geographic objects (e.g. point
<-> geogpoint
, multipolygon
<-> geogmultipolygon
).
Implicit conversions are those which can happen without an explicit call to the CAST function or the :: operator.
Explicit conversions require explicit calls to the CAST function or the :: operator, e.g. CAST(123.45 AS text)
or '2020-01-07 08:15:00'::timestamp
.
They are most often internally implemented as calls to special conversion functions such as TO_CHAR or ST_TOGEOM.
The following are special conversion functions for performing explicit casts between values of different types: