如何设置 google.protobuf.Timestamp 为空?
How to set google.protobuf.Timestamp to null?
如何在 Google ProtoBuf 中表示空时间戳?
我正在从 postgreSQL 数据库中读取 DateTime(其中一些为空)到 protobuf TimeStamps 中。
message test {
google.protobuf.TimestampValue TransactionTime =1;
}
很遗憾,没有google.protobuf.TimestampValue这样的动物。
非常感谢任何帮助。
TIA
正如@JayantSeth 指出的那样,您应该使用 google.protobuf.Timestamp
。
由于 Protobuf
禁止将字段设置为 null
,您可以使用默认值在您的应用程序中显示 null
。 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;
}
类型int64
和int32
的默认值都是0
。因此,如果从 Postgres 读取的某些值是 null,那么您可以将其设置为 0。
Timestamp timestamp;
timestamp.set_seconds(0);
timestamp.set_nanos(0);
并且在您的应用程序中,您可以将 timestamp(0)
视为 null
。
如何在 Google ProtoBuf 中表示空时间戳?
我正在从 postgreSQL 数据库中读取 DateTime(其中一些为空)到 protobuf TimeStamps 中。
message test {
google.protobuf.TimestampValue TransactionTime =1;
}
很遗憾,没有google.protobuf.TimestampValue这样的动物。
非常感谢任何帮助。
TIA
正如@JayantSeth 指出的那样,您应该使用 google.protobuf.Timestamp
。
由于 Protobuf
禁止将字段设置为 null
,您可以使用默认值在您的应用程序中显示 null
。 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;
}
类型int64
和int32
的默认值都是0
。因此,如果从 Postgres 读取的某些值是 null,那么您可以将其设置为 0。
Timestamp timestamp;
timestamp.set_seconds(0);
timestamp.set_nanos(0);
并且在您的应用程序中,您可以将 timestamp(0)
视为 null
。