time-stamp, which comes with Emacs by default, will allow you to do exactly what you want with the appropriate settings. E.g. I have:
# Local Variables:
# time-stamp-line-limit: 1000
# time-stamp-format: "[%Y-%m-%d %H:%M]"
# time-stamp-active: t
# time-stamp-start: "version = \""
# time-stamp-end: "\""
in some ...
Here's a function I wrote,
(defun org-table-collapse-cell ()
(save-excursion ;; Save point
(org-table-blank-field) ;; Blank the cell
(while (progn ;; Swap blank cell with a cell under it until the blank is at the bottom.
AFAIK, you cannot use org-habit without a repeater intervals in date.
for logging DONE state (or other todo keywords)
'((sequence "TODO" "|" "DONE(!)"))) ;mind the !
for more: https://www.gnu.org/software/emacs/manual/html_node/org/Tracking-TODO-state-changes.html