Griddb TIMESTAMP before 1970 works in WHERE but rejects on insert - not sure if this is safe to use
21:26 22 Apr 2026

Got a Collection in GridDB with a timestamp column, storing event records. Some of my incoming data has dates from before 1970. Tried inserting one of those rows, got a range error back. Went and checked, TIMESTAMP in GridDB starts from 1970/1/1 UTC so that rejection makes complete sense.

What I didn't expect was this running without any complaint:

SELECT * FROM eventRecords 
WHERE event_date > TIMESTAMP('1945-08-15T00:00:00.000Z')

Just worked. Returned rows normally. Same value that got rejected on insert sailed through as a filter condition no problem. Sat there for a minute just looking at it.

Tried going even further back just to see what would happen:

SELECT * FROM eventRecords 
WHERE event_date > TIMESTAMP('1850-01-01T00:00:00.000Z')

Also ran fine. Returned everything in the collection which makes sense since nothing stored goes before 1970. But the fact that TQL even parsed and accepted that string without throwing anything is what I can't get my head around.

Then pushed the other end to see if upper boundary behaves the same way. Tried a date past 9999:

SELECT * FROM eventRecords 
WHERE event_date < TIMESTAMP('10000-06-01T00:00:00.000Z')

That one actually threw an error. So pre 1970 quietly works and post 9999 breaks. Same type of violation, completely different outcome depending on which boundary you cross.

Went back through the docs and found one line that said something like values outside the storable range may still be used in search conditions but errors are possible when obtaining rows. That one line is doing a lot of heavy lifting and not really telling me whether this is intentional design or just undefined behavior that happens to work right now.

Also been wondering about numeric type comparisons across boundaries. My column is BYTE type, range being -128 to 127. If I accidentally pass in a value like 200 in a WHERE condition comparing against that column, does TQL cast it down silently or compare as is or just error. Tested a couple times and got inconsistent feelings about what was happening without being fully sure.

Not trying to rely on broken behavior here. Just want to know if pre 1970 timestamps in WHERE conditions are actually safe to use or if I'm sitting on something that could quietly break later.

database nosql griddb tql