Я хочу получить этот вывод:
2018-09-02 00:00:00.000
Я попробовал следующий код:
.Cells(LRS + 1, 15).Value = Format(.Cells(LRS + 1, "A").Value, "yyyy-MM-dd hh:mm:ss.fff")
И я получил:
2018-09-02 00:00:00.fff
Начальная дата в Excel имеет следующий формат yyyy/mm/dd
, без yyyy/mm/dd
времени. Поэтому часть времени включает в себя только нули 00:00:00.000
. Причина, по которой я хочу включить время в конкретный формат, заключается в том, что я планирую импортировать эти даты в таблицу SQL с этим форматом.
Есть ли решение?
Как видно из документации fff
не распознается как токен форматирования в VBA.
Полезно, что вы можете импортировать данные в SQL без форматирования, чтобы добавить время. Если вы импортируете его в поле datetime
времени, механизм SQL по умолчанию автоматически установит для части времени поля значение полуночи даты, которую вы указали.
Я думаю, что вы можете просто изменить строку формата на yyyy-MM-dd
.
Однако, если вы действительно хотите сделать это так, то, поскольку время не указано, просто используйте жесткий код 000
вместо fff
. Остальное время может быть аналогичным образом жестко закодировано, поскольку оно никогда не меняется, поэтому вы получите yyyy-MM-dd 00:00:00.000
. Но, как я уже сказал, я думаю, что это немного бессмысленно.
После замены формата ячейки соответствующим форматом, скорее всего, значение ячейки будет импортировано как текст, а не как значение.
Sub test()
Dim s As String, s1 As String, s2 As String
'First Cell format as your "yyyy-mm-dd hh:mm:ss.000"
Range("a2").NumberFormatLocal = "yyyy-mm-dd hh:mm:ss.000"
'In vb,This format("yyyy-mm-dd hh:mm:ss.000") is not recognized.
Range("b2") = Format(Range("a2"), "yyyy-mm-dd hh:mm:ss.000")
s1 = Format(Range("a2"), "yyyy-mm-dd hh:mm:ss.000")
's1 = "2018-09-03 01:24:33.000"
'Since you format a2 cell as "yyyy-mm-dd hh:mm:ss.000" you can get data as text
Range("b2") = Range("a2").Text
s2 = Range("a2").Text
's2= "2018-09-03 01:24:33.240"
End Sub
Данные листа
Локальное окно
fff
не распознаются как форматирование маркеров. Содержит ли исходная информация, которую вы обрабатываете, эту информацию? Я упоминаю об этом, потому чтоdatetime
время по умолчанию в более старых версиях MySQL не включают миллисекунды или микросекунды - вам придется использовать datetime (3) или datetime (6).