A nested bitemporal relational data model and its query language are implemented. The bitemporal atom (BTA) is the fundamental construct to represent temporal data and it contains 5 components: a value, the lower and upper bounds of valid time, and the lower and upper bounds of the recoding time. We consider 2 types of data structures for storing BTAs: 1) string representation and 2) abstract data-type representation. We also develop a preprocessor for translating a bitemporal structured query language (BtSQL) statement into standard SQL statements. The BtSQL includes the select, insert, delete, and update statements of the SQL, extended for bitemporal relational databases. It supports bitemporal, historical, and current context. Bitemporal context is for auditing purposes, historical context is for querying past states of a bitemporal database, and current context is for querying the snapshot state of a bitemporal database. We also evaluate the performance of the 2 alternative implementation methods by considering retrieval, insertion, and update queries.