rollback-to-date-sql
Last published July 28, 2025
The rollback-to-date-sql command is a helper command that allows you to inspect the SQL Liquibase will run while using the rollback-to-date command.
Uses
The rollback-to-date-sql
command is typically used when you want to inspect the raw SQL before running the rollback-to-date
command, so you can correct any issues that may arise before running the command.
Syntax
Before running the rollback-to-date-sql
command, you can see the dates of all previous changes by running the history command.
Note: Unlike the rollback-to-date
command, there is no impact to your database while using this command.
To run the rollback-to-date-sql
command, specify the driver, classpath, and URL in the Liquibase properties file. You can also specify these properties in your command line.
Then run the rollback-to-date-sql
command:
liquibase rollback-to-date-sql --date=2020-05-07 --changelog-file=example-changelog.xml
Parameters
Global parameters
Attribute | Definition | Requirement |
| File path to where the command output will be written. If not specified, output goes to | Optional |
Command parameters
Attribute | Definition | Requirement |
| The root changelog | Required |
| The date and time your database rolls back to. The date format is | Required |
| The JDBC database connection URL. | Required |
| Fully-qualified class that specifies a | Optional |
| Path to a properties file for the | Optional |
| Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run. Note: If you use Liquibase 4.23.0 or earlier, use the syntax | Optional |
| Name of the default catalog to use for the database connection | Optional |
| Name of the default schema to use for the database connection. If Note: In the properties file and Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set | Optional |
| The JDBC driver class | Optional |
| The JDBC driver properties file | Optional |
| Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run. | Optional |
| Control whether names of objects in the default catalog are fully qualified or not. If | Optional |
| Control whether names of objects in the default schema are fully qualified or not. If | Optional |
| Password to connect to the target database. Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. | Optional |
| The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that Liquibase automatically generates. | Optional |
| Username to connect to the target database. Tip: It is best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. | Optional |
Output
Liquibase Community 4.9.1 by Liquibase
-- *********************************************************************
--rollback to 2022-05-04 Script
-- *********************************************************************
-- Change Log: example-changelog.sql
-- Ran at: 5/6/22, 1:16 PM
-- Against: DBUSER@jdbc:h2:tcp://localhost:9090/mem:dev
-- Liquibase version: 4.9.1
-- *********************************************************************
-- Lock Database
UPDATE PUBLIC.DATABASECHANGELOGLOCK SET LOCKED = TRUE, LOCKEDBY = 'DESKTOP-SQVSSV2 (192.168.1.179)', LOCKGRANTED = NOW() WHERE ID = 1 AND LOCKED = FALSE;
-- Rolling Back ChangeSet: example-changelog.sql::3::other.dev
ALTER TABLE person DROP COLUMN country;
DELETE FROM PUBLIC.DATABASECHANGELOG WHERE ID = '3' AND AUTHOR = 'other.dev' AND FILENAME = 'example-changelog.sql';
-- Rolling Back ChangeSet: example-changelog.sql::2::your.name
DROP TABLE company;
DELETE FROM PUBLIC.DATABASECHANGELOG WHERE ID = '2' AND AUTHOR = 'your.name' AND FILENAME = 'example-changelog.sql';
-- Rolling Back ChangeSet: example-changelog.sql::1::your.name
DROP TABLE person;
DELETE FROM PUBLIC.DATABASECHANGELOG WHERE ID = '1' AND AUTHOR = 'your.name' AND FILENAME = 'example-changelog.sql';
-- Release Database Lock
UPDATE PUBLIC.DATABASECHANGELOGLOCK SET LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;
Liquibase command 'rollback-to-date-sql' was executed successfully.