public void ScaleToDateTime()
        {
            var utcNow       = DateTime.UtcNow;
            var v1           = new BigtableVersion(12345);
            var v2           = new BigtableVersion(12345 + 1_000);
            var timespanDiff = v2.ToDateTime() - v1.ToDateTime();

            Assert.Equal(TimeSpan.FromSeconds(1), timespanDiff);
        }
        // [END bigtable_filters_limit_value_regex]

        // [START bigtable_filters_limit_timestamp_range]
        /// <summary>
        /// /// Read using a timestamp range filter from an existing table.
        ///</summary>
        /// <param name="projectId">Your Google Cloud Project ID.</param>
        /// <param name="instanceId">Your Google Cloud Bigtable Instance ID.</param>
        /// <param name="tableId">Your Google Cloud Bigtable table ID.</param>

        public string filterLimitTimestampRange(
            String projectId, String instanceId, String tableId)
        {
            BigtableVersion timestamp_minus_hr = new BigtableVersion(new DateTime(2020, 1, 10, 13, 0, 0, DateTimeKind.Utc));

            // A filter that matches cells whose timestamp is from an hour ago or earlier
            RowFilter filter = RowFilters.TimestampRange(new DateTime(0), timestamp_minus_hr.ToDateTime());

            return(readFilter(projectId, instanceId, tableId, filter));
        }
        public void RoundTripDateTime()
        {
            var dateTime = DateTime.UtcNow;
            var version  = new BigtableVersion(dateTime);

            // BigtableVersion stores micros, but aligns to millis, which is 10000s of ticks, so truncate the ticks.
            var expected = new DateTime(dateTime.Ticks - (dateTime.Ticks % 10000), DateTimeKind.Utc);

            Assert.Equal(expected, version.ToDateTime());
        }