How to reduce size of a large SQLite database with series data
There are some ways. Here are two that seem appropriate for your case:
WITHOUT ROWID tables
The ROWID is an internal primary key that SQLite tables have by default, taking 64 bit per record. Since you were talking about a UNIQUE constraint for the datetime column, this column seems a good candidate for the primary key (which always has a unique constraint attached). So you can create a SQLite table without ROWID, as follows:
CREATE TABLE &quot;Data&quot; (
    &quot;dateTime&quot; INTEGER PRIMARY KEY,
    &quot;value1&quot; REAL, 
    &quot;value2&quot; REAL, 
    &quot;value3&quot; INTEGER, 
    &quot;value4&quot; INTEGER 
) WITHOUT ROWID;

Storing delta values
I have never tried this in SQLite in practice, but: some data is more compactly stored by storing only the difference to the previous row. In this case, the datetime values are great for this, if they can be stored in order into the database. In that case, you would use three columns:

A sequentially numbered integer primary key.
A datetime integer column, only filled for every (say) 1000 records.
A datetime_delta column, storing the difference from the last row with a filled datetime column.

SQLite stores integer values individually into 2-9 bytes (incl. one storage mode byte), depending on their value. Assuming an average of 4 bytes for the sequential primary key and an average of 2.5 bytes for the delta values would save 2.5 bytes compared to the current 9 byte integer. Savings are larger if you have multiple columns in your table that profit from delta storage, as you need the sequential primary key only once. For example, if value1 … value4 are measurement values that tend to grow and shrink over time, they are also good candidates.
After loading a row at primary key value n, you would also have to retrieve the row at primary key value n DIV 1000 (meaning integer division) to have the base for your delta values.