如何在vba中以“yyyy/mm/dd hh:mm:ss.fff”格式获取时间戳?

ffvjumwh  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(442)

我想得到这个输出:

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 ,不包括时间。这就是为什么时间部分只包含零 00:00:00.000 . 我想将时间包含在特定格式中的原因是,我计划将这些日期导入到具有该格式的sql表中。
有什么解决办法吗?

mpgws1up

mpgws1up1#

从文档中可以看到 fff 在vba中未被识别为格式标记。
有帮助的是,您可以将数据导入到sql中,而无需格式化数据以添加时间。如果你把它导入 datetime 字段sql引擎会自动将字段的时间部分默认为您给定日期的午夜。
我想你可以把格式字符串改成 yyyy-MM-dd 它自己。
但是,如果您真的想这样做,那么由于没有指定时间,所以只需要硬代码 000 而不是 fff . 剩下的时间也可以用类似的硬编码,因为它从来没有变化过,所以你最终会 yyyy-MM-dd 00:00:00.000 . 但正如我所说,我认为这有点毫无意义。

4nkexdtk

4nkexdtk2#

用相应的格式替换单元格格式后,很可能单元格的值是作为文本导入的,而不是作为值导入的。

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

工作表数据

本地窗口

相关问题