如何将DB2日期时间字符串转换为Excel日期
我将定期从DB/2数据库中获取摘录,日期和时间点的格式如下:如何将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
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,如果我在公式中使用它,我希望在格式上会有一些问题