| PostgreSQL Type | PostgreSQL Size | Description | Range | Diesel Type | Rust Type |
|---|---|---|---|---|---|
| Nullable Types | nullable | Nullable<T> |
Option<T> |
||
| Numeric Types | |||||
smallint, int2 |
2 bytes | signed integer | -32768 to +32767 | SmallInt |
i16 |
integer, int, int4 |
4 bytes | signed integer | -2147483648 to +2147483647 | Integer |
i32 |
bigint, int8 |
8 bytes | signed integer | -9223372036854775808 to +9223372036854775807 | BigInt |
i64 |
numeric(p, s), decimal(p, s) |
2 bytes per 4 digits + 3 to 8 bytes | exact numeric of selectable precision | 131072.16383 digits | Numeric |
bigdecimal::BigDecimal |
real, float4 |
4 bytes | single precision floating-point number | 6 digits precision | Float |
f32 |
double precision, float8 |
8 bytes | double precision floating-point number | 15 digits precision | Double |
f64 |
smallserial, serial2 |
2 bytes | autoincrementing integer | 1 to 32767 | SmallInt |
i16 |
serial, serial4 |
4 bytes | autoincrementing integer | 1 to 2147483647 | Integer |
i32 |
bigserial, serial8 |
8 bytes | autoincrementing integer | 1 to 9223372036854775807 | BigInt |
i64 |
| Monetary Types | |||||
money |
8 bytes | currency amount | -92233720368547758.08 to +92233720368547758.07 | Money |
Cents |
| Character Types | |||||
character varying(n), varchar(n) |
n+1 or n+4 bytes | variable-length character string | Text |
String, &str |
|
character(n), char(n) |
n+1 or n+4 bytes | fixed-length character string | Text |
String, &str |
|
text |
n+1 or n+4 bytes | variable-length character string | Text |
String, &str |
|
| Binary Data Types | |||||
bytea |
n+1 to n+4 bytes | binary data ("byte array") | Binary |
Vec<u8>, &u8 |
|
| Date/Time Types | |||||
timestamp, timestamp(p) without time zone |
8 bytes | date and time of day | 4713 BC to 294276 AD, 1 microsecond | Timestamp |
chrono::NaiveDateTime |
timestamptz, timestamp(p) with time zone |
8 bytes | date and time of day, with time zone | 4713 BC to 294276 AD, 1 microsecond | Timestamptz |
chrono::DateTime |
date |
4 bytes | calendar date (year, month, day) | 4713 BC to 5874897 AD, 1 day | Date |
chrono::NaiveDate |
time, time(p) without time zone |
8 bytes | time of day (no date) | 00:00:00 to 24:00:00, 1 microsecond | Time |
chrono::NaiveTime |
timetz, time(p) with time zone |
12 bytes | time of day (no date), with time zone | 00:00:00+1459 to 24:00:00-1459, 1 microsecond | ||
interval(fields)(p) |
16 bytes | time span | -178000000 years to 178000000 years, 1 microsecond | Interval |
PgInterval |
| Boolean Type | |||||
boolean, bool |
1 byte | logical Boolean (true/false) | Bool |
bool |
|
| Geometric Types | |||||
point (x,y) |
16 bytes | geometric point on a plane | |||
line {A,B,C} |
32 bytes | infinite line on a plane | |||
lseg ((x1,y1),(x2,y2)) |
32 bytes | finite line segment on a plane | |||
box ((x1,y1),(x2,y2)) |
32 bytes | rectangular box on a plane | |||
path ((x1,y1),...) |
16+16n bytes | closed geometric path on a plane | |||
path [(x1,y1),...] |
16+16n bytes | open geometric path on a plane | |||
polygon ((x1,y1),...) |
40+16n bytes | closed geometric path on a plane | |||
circle <(x,y),r\> |
24 bytes | circle on a plane | |||
| Network Address Types | |||||
cidr |
7 or 19 bytes | IPv4 or IPv6 network address | Cidr |
ipnetwork::IpNetwork |
|
inet |
7 or 19 bytes | IPv4 or IPv6 host address | Inet |
ipnetwork::IpNetwork |
|
macaddr |
6 bytes | MAC address | MacAddr |
[u8; 6] |
|
macaddr8 |
8 bytes | MAC address (EUI-64 format) | |||
| Enumerated Types | |||||
enum |
4 bytes | enumerated value | (user-defined) | String, enum |
|
| Bit String Types | |||||
bit(n) |
1 byte per 8 bits + 5 or 8 bytes | fixed-length bit string | |||
bit varying(n), varbit |
1 byte per 8 bits + 5 or 8 bytes | variable-length bit string | |||
| Text Search Types | |||||
tsvector |
text search document | TsVector |
|||
tsquery |
text search query | TsQuery |
|||
| UUID Type | |||||
uuid |
16 bytes | universally unique identifier | Uuid |
uuid::Uuid |
|
| XML Type | |||||
xml |
XML data | ||||
| JSON Types | |||||
json |
textual JSON data | Json |
serde_json::Value |
||
jsonb |
binary JSON data, decomposed | Jsonb |
serde_json::Value |
||
Arrays |
|||||
t[] |
array of values | Array<T> |
Vec<T>, Vec<Option<T>>, &[T], &[Option<T>] |
||
| Range Types | |||||
int4range |
range of integer | Range<Integer> |
(Bound<i32>, Bound<i32>) |
||
int8range |
range of bigint | Range<BigInt> |
(Bound<i64>, Bound<i64>) |
||
numrange |
range of numeric | Range<Numeric> |
(Bound<bigdecimal::BigDecimal>, Bound<bigdecimal::BigDecimal>) |
||
tsrange |
range of timestamp | Range<Timestamp> |
(Bound<chrono::NaiveDateTime>, Bound<chrono::NaiveDateTime>) |
||
tstzrange |
range of timestamptz | Range<Timestamptz> |
(Bound<chrono::DateTime>, Bound<chrono::DateTime>) |
||
daterange |
range of date | Range<Date> |
(Bound<chrono::NaiveDate>, Bound<chrono::NaiveDate>) |
Forked from steveh/postgresql-diesel-rust-types.md
Created
November 28, 2021 05:20
-
-
Save bonedaddy/7c14292c8cda194197cf0a690c506e7d to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment