Class Timestamp (2.28.0)

A representation of the Spanner TIMESTAMP type: An instant in time.

A Timestamp represents an absolute point in time (i.e., is independent of any time zone), with at least nanosecond precision, and with a range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z, inclusive.

The MakeTimestamp(src) factory function(s) should be used to construct Timestamp values from standard representations of absolute time.

A Timestamp can be converted back to a standard representation using ts.get<T>().

See Also

https://cloud.google.com/spanner/docs/data-types#timestamp_type

Constructors

Timestamp(Timestamp &&)

Regular value type, supporting copy, assign, move.

Parameter
Name Description
Timestamp &&

Timestamp(Timestamp const &)

Regular value type, supporting copy, assign, move.

Parameter
Name Description
Timestamp const &

Timestamp()

Default construction yields 1970-01-01T00:00:00Z.

Operators

operator=(Timestamp &&)

Regular value type, supporting copy, assign, move.

Parameter
Name Description
Timestamp &&
Returns
Type Description
Timestamp &

operator=(Timestamp const &)

Regular value type, supporting copy, assign, move.

Parameter
Name Description
Timestamp const &
Returns
Type Description
Timestamp &

Functions

get() const

Convert the Timestamp to the user-specified template type.

Fails if *this cannot be represented as a T.

Supported destination types are:

  • absl::Time - Since absl::Time can represent all possible Timestamp values, get<absl::Time>() never returns an error.
  • google::protobuf::Timestamp - Never returns an error, but any sub-nanosecond precision will be lost.
  • google::cloud::spanner::sys_time<Duration> - Duration::rep may not be wider than std::int64_t, and Duration::period may be no more precise than std::nano.
Example
sys_time<std::chrono::nanoseconds> tp = ...;
Timestamp ts = MakeTimestamp(tp).value();
assert(tp == ts.get<sys_time<std::chrono::nanoseconds>>().value());
Parameter
Name Description
typename T
Returns
Type Description
StatusOr< T >