'How to set google.protobuf.Timestamp to null?
How to represent a null timestamp in Google ProtoBuf?
I am reading DateTime's from a postgreSQL database--some of which are null--into protobuf TimeStamps.
message test {
google.protobuf.TimestampValue TransactionTime =1;
}
Unfortunately, there is no such animal as google.protobuf.TimestampValue.
Any help is most appreciated.
TIA
Solution 1:[1]
As @JayantSeth pointed out, you should use google.protobuf.Timestamp
.
Since Protobuf
forbids to set field to null
, you could use a default value to present null
in your application. There are two fields in message Timestamp
:
message Timestamp {
// Represents seconds of UTC time since Unix epoch
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
// 9999-12-31T23:59:59Z inclusive.
int64 seconds = 1;
// Non-negative fractions of a second at nanosecond resolution. Negative
// second values with fractions must still have non-negative nanos values
// that count forward in time. Must be from 0 to 999,999,999
// inclusive.
int32 nanos = 2;
}
The default value of type int64
and int32
both are 0
. Therefore, if some value read from Postgres is null, then you could set it to 0.
Timestamp timestamp;
timestamp.set_seconds(0);
timestamp.set_nanos(0);
And in your application, you could treat timestamp(0)
as null
.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | ramsay |