You can try the
datetree package I wrote for the purpose of answering your question. With datetree.el in your
load-path add the following lines to your .emacs/init.el file:
(setq datetree-root "Engineering worklog"
datetree-format-string '("%Y" "Q%q" "week %W" "%D"))
Now open the Org file and call
datetree-find, which should either jump the current entry or create a new one at the appropriate location. By default entries are placed chronologically with the newest entry at the bottom. If that's not the case for you, you'll have to change
What datetree does is it jumps to the first node and moves down sequentially until a subchild matching the current date is found. If a subchild is not found, jump to the matching child and insert a new sibling. Likewise, if a child is not found, jump to the parent node and so on.