Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将DB2日期时间字符串转换为Excel日期_Excel_Vba - Fatal编程技术网

如何将DB2日期时间字符串转换为Excel日期

如何将DB2日期时间字符串转换为Excel日期,excel,vba,Excel,Vba,我将定期从DB/2数据库中获取摘录,日期和时间点的格式如下: 2002-01-15-00.00.00.000000 2008-01-05-12.36.05.190000 9999-12-31-24.00.00.000000 有没有比使用子字符串分解更容易的方法将其转换为Excel日期格式 DB2date = DateValue(Left(a, 4) + "/" + Mid(a, 6, 2) + "/" + Mid(a, 9, 2)) 谢谢你的帮助 如果你真的愿意,我相信你可以用Regex's

我将定期从DB/2数据库中获取摘录,日期和时间点的格式如下:

2002-01-15-00.00.00.000000
2008-01-05-12.36.05.190000
9999-12-31-24.00.00.000000
有没有比使用子字符串分解更容易的方法将其转换为Excel日期格式

DB2date = DateValue(Left(a, 4) + "/" + Mid(a, 6, 2) + "/" + Mid(a, 9, 2))

谢谢你的帮助

如果你真的愿意,我相信你可以用Regex's做点什么。但这不会更好,可能更糟

如果您能原谅一些C#(我已经多年没有接触VB了,所以我不再知道函数调用),您也可以这样做:

DB2string = "2002-01-15-00.00.00.000000";
DB2date = DateValue(DB2string.SubString(0, 10).Replace('-', '/'));

但再一次,你并没有真正得到任何东西。你能举一个例子说明你当前的代码会在哪里中断吗?

不清楚你说的是公式函数还是VBA函数

公式函数 不要使用DateValue函数,它需要一个字符串;使用Date函数,该函数需要数字年、月、日:

=DATE(INT(LEFT(A1,4)),INT(MID(A1,6,2)),INT(MID(A1,9,2)))
假设日期字符串为A1

VBA函数 与上面的计算类似,只需使用DateSerial函数即可:

dt= DateSerial(Int(Left$(dt$, 4), Int(Mid$(dt$, 6, 2)), Int(Mid$(dt$, 9, 2)))
在VBA中,
dateValue()
可以将字符串的第一部分转换为日期:

? dateValue("2002-01-15")

    15/01/2002
因此,正确的方法是

? dateValue(left("2002-01-15-00.00.00.000000",10))
只要DB2总是给您一个“YYYY-MM-DD”日期,这将始终为您提供正确的答案。结果的格式(dd/mm/yy、mm-ddd-yyy等)将取决于计算机的本地设置/单元格的特定设置


如果您想提取字符串中的“时间”部分,则有一个
timeValue()
函数将最终完成此任务。

如果您想包含时间信息,您还有更多的工作要做;DateValue将丢弃它。
TimeValue可以将时间部分计算为秒,因此您可以添加它们:

= DateValue(Mid(a, 1, 10)) + TimeValue(Mid(a, 12, 8))
但您的示例数据存在另一个问题:它同时具有时间值“00.00.00”和“24.00.00”。

第二个阻塞了TimeValue函数,因此需要为特殊情况编写代码

我同时使用了法语、德语和英语版本的Excel,如果我在公式中使用它,我希望在格式上会有一些问题