In case you can't clean the source file, you could do something like this
library(tidyverse)
library(lubridate)
df <- data.frame(
start_date = c("01-Jul-2021", "44228", "01-Jul-2021", "44440")
)
df %>%
mutate(
start_date = if_else(str_detect(start_date, "\\d{1,2}-"),
dmy(start_date),
as.Date(as.numeric(start_date), origin = "1899-12-30"))
)
#> start_date
#> 1 2021-07-01
#> 2 2021-02-01
#> 3 2021-07-01
#> 4 2021-09-01
Created on 2021-07-30 by the reprex package (v2.0.0)