require(data.table)
set.seed(1L)
dt = data.table(d=sample(seq(as.Date("2015-01-01"), as.Date("2015-12-31"), by="days"), 1e7, TRUE))
typeof(dt$d) # double
system.time(dt[, .N, by=d]) # 0.7s
system.time(dt[, .N, by=as.numeric(d)]) # 0.7s
system.time(dt[, .N, by=as.integer(d)]) # 0.2s