Because the nature of the returned list will differ from the input chart, I recommend that you place the following formula in a new sheet. The formula assumes that your test data (with headers as shown in your post) is in Sheet1!A:B. Place the following formula in cell A1 of your new sheet:
=ArrayFormula({Sheet1!A1; QUERY(FLATTEN(SPLIT(REPT(Sheet1!A2:A&"|",Sheet1!B2:B),"|")),"Select * WHERE Col1 Is Not Null")})
This formula will produce the header and all results.
The initial return data will look like numbers in the 40000-50000 range. These are raw dates. Just select the column and format in the date format of your choice.
How It Works:
A virtual array containing the header (pulled from the original Col-A header cell) and all results is formed between curly brackets { }. The semicolon means "Place the content before on top of the content after" (i.e., place the header over the results).
A pipe symbol is appended to the end of every cell value in A2:A.
REPT
forms a one-column array of strings made up of A2:A&"|"
B2:B
times in a row each.
SPLIT
then splits those concatenated strings at the pipe symbol, pushing the iterations into virtual cells moving right (i.e., forming a 2D grid).
FLATTEN
forms one column from the 2D grid results.
QUERY
cleans out any null data (introduced by the blank rows in your original sheet and the uneven number of times each date is requested in B2:B after the SPLIT
is performed).