Appropriate column type(s) for dates and dynamic pricing data
For a relational database the correct way is to have a normalized table:

hotel_id         &lt;whatever type&gt;,
collection_date  date,
price_date       date,
price            numeric()


It sounds like you want to "compress" the price values into some sort of array. There are relational database systems which support the array type, PostgreSQL for one. Document stores (Mongo et al) have arrays as a natural part of their JSON support. Time series databases are optimized to store a changing metric (the room price) over time, by key (the hotel ID).

Many relational databases support compression and column-wise storage (Vertica, Teradata et al). These will space-optimize the storage of the values that are shared by many rows. This optimization is transparent to the application, which sends and receives rows oblivious to the DBMS's internal processing.