Я получил этот JSON в VB6 (не .NET) внутри текстового поля:
[{"id":123,"key":"h73df", "birth_date":"20180101"}]
При отправке по URL-адресу ошибка не возвращается .. но дата не вставляется, и я не знаю почему.
Я уже пробую разные форматы, например:
"2018.01.01"
["20180101"]
2018.01.01
но не сработает. Я думаю, мне нужно использовать что-то вроде cdate(), но затем я помещаю всю строку JSON в текстовое поле, и все становится простой строкой ... и не работает.
Возможный дубликат "Правильный" формат даты JSON
Вам необходимо опубликовать документацию с сайта, на котором вы пытаетесь разместить это сообщение. Неважно, что кто-то из нас считает правильным форматом даты, все, что имеет значение, - это то, что ожидает этот отец или API.

Самому JSON не важно, какой формат вы используете для даты. Однако чаще всего он используется в формате JavaScript, который является форматом ISO 8601.
При этом вы можете создать строку в этом формате, используя следующий код VB6 (ниже возвращается время в формате UTC, если вы хотите использовать местное время, вам нужно будет вызвать API GetLocalTime вместо GetSystemTime):
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Put inside module:
Private Type SYSTEMTIME '16 Bytes
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function GetJsonDateTime() As String
Dim NowTime As SYSTEMTIME
Dim sYear, sMonth, sDayOfWeek, sDay, sHour, sMinute, sSecond, sMilliseconds As String
Dim JsonDateTime As String
GetSystemTime NowTime
sYear = Format(NowTime.wYear, "0000")
sMonth = Format(NowTime.wMonth, "00")
sDay = Format(NowTime.wDay, "00")
sHour = Format(NowTime.wHour, "00") 'wHour - or + X depends local timezone
sMinute = Format(NowTime.wMinute, "00")
sSecond = Format(NowTime.wSecond, "00")
sMilliseconds = Format(NowTime.wMilliseconds, "000")
JsonDateTime = sYear & "-" & sMonth & "-" & sDay & "T" & sHour & ":" & sMinute & ":" & sSecond & "." & sMilliseconds & "Z"
GetJsonDateTime = JsonDateTime
End Function
JSON действительно не имеет типа даты. Люди в конечном итоге подбрасывают любую причудливую смесь, которую хотят. Вам нужно выяснить, чего ожидает публикуемый вами сервер, а затем выполнить его.