【问题标题】:How can I get the timestamp in “yyyy/MM/dd hh:mm:ss.fff"” format in VBA?如何在 VBA 中获取“yyyy/MM/dd hh:mm:ss.fff”格式的时间戳?
【发布时间】:2018-12-13 09:57:20
【问题描述】:

我想得到这个输出:

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 表中。

有什么解决办法吗?

【问题讨论】:

  • 从文档中可以看到:docs.microsoft.com/en-us/office/vba/language/reference/… fff 未被识别为格式化标记。您正在处理的原始数据是否包含此信息?我提到它是因为旧 MySQL 中的默认 datetime 不包括毫秒或微秒 - 您必须改用 datetime(3) 或 datetime(6)。
  • 初始日期的格式为“yyyy/mm/dd”,不包括时间,这就是为什么时间部分只包括零00:00:00.000。我想以特定格式包含时间的原因是计划以该格式将这些日期导入 sql 表中。
  • yyyy-MM-dd hh:mm:ss.000 是在 Excel 中以毫秒显示时间的正确格式

标签: mysql excel vba datetime date-formatting


【解决方案1】:

documentation 可以看出,fff 在 VBA 中不被识别为格式化标记。

很有帮助的是,您实际上可以将数据导入 SQL,而无需对其进行格式化以添加时间。如果您将其导入datetime 字段,SQL 引擎将自动将该字段的时间部分默认为您指定日期的午夜。

我认为您可以自行将格式字符串更改为yyyy-MM-dd

但是,如果您真的想这样做,那么由于没有指定时间,因此只需硬编码 000 而不是 fff。其余时间可以类似地硬编码,因为它永远不会改变,所以你最终得到yyyy-MM-dd 00:00:00.000。但正如我所说,我认为这有点毫无意义。

【讨论】:

  • 我将使用这个简单的格式字符串 yyyy-MM-dd 并对时间进行硬编码,因为其他方法都不起作用。
  • 明确地说,您根本不需要对时间做任何事情。你可以把它排除在外。如果这不起作用,我会感到非常惊讶 - mySQL 应该在导入日期时间字段时接受一个简单的日期。
【解决方案2】:

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

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

工作表数据

本地窗口

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 2021-05-23
    • 2017-07-09
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多