read_csv loads dates as text unless you tell it otherwise, and text can't do date arithmetic. Convert a column with pd.to_datetime:
df["order_date"] = pd.to_datetime(df["order_date"])
or convert while reading: pd.read_csv("sales.csv", parse_dates=["order_date"]). The column's type becomes datetime64.
Once a column holds real dates, the .dt accessor gives you its parts: .dt.month, .dt.year, .dt.day_name(), and .dt.to_period("M") for year-month labels like 2026-03. If you see Can only use .dt accessor with datetimelike values, the column is still text.
Dates compare with strings written year-month-day, so df[df["order_date"] >= "2026-03-01"] works. Subtracting two dates gives a time span, and .dt.days turns it into a number of days.
To total by month, group by the month: df.groupby(df["order_date"].dt.month)["revenue"].sum().