Sadly, Excel's handling of CSV's has always been rather poor.
The generally accepted solution is to create the CSV file yourself using VBA code. That way you can format things exactly how you want to and you can stop the rather daft thing that Excel does which is to make the quotes around fields optional and sometimes get it wrong. There are a number of reasonable examples of CSV file creation on the Internet and several addins that provide equivalent tools.
Here is some simple code to get you started:
' Output a more consistant CSV file
Public Sub OutputQuotedCSV()
Const QSTR As String = """"
Dim myRecord As Range
Dim myField As Range
Dim vFilename As Variant
Dim nFileNum As Long
Dim sOut As String
'Get a filename to save as
vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft CSV files,*.csv", _
title:="Save as CSV with fields in double quotes")
If vFilename = False Then Exit Sub 'User chose Cancel
nFileNum = FreeFile
Open vFilename For Output As #nFileNum
For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
For Each myField In Range(.Cells(1), Cells(.Row, 256).End(xlToLeft))
sOut = sOut & "," & QSTR & _
Replace(myField.Text, QSTR, QSTR & QSTR) & QSTR
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
You will need to add a test for dates into that and format accordingly.