我正在使用Outlook的VBA项目。该项目正在查看日历约会,并将它们与从SQL数据库中提取并存储在Date变量中的日期进行比较。
目前,当日期来自SQL数据库时,它们没有任何Time组件,但我想添加一个。
例如,SQL查询出现“07/03/2018”,我希望能够将其设置为“07/03/2018 09:00:00”以及当天的其他各种时间。< / p>
有没有办法在不将日期变量转换为字符串的情况下执行此操作,只是在最后添加时间?这是因为我希望能够在程序的后期对变量使用基于日期的函数,例如DateAdd等。
答案 0 :(得分:0)
有很多方法可以一起添加日期和时间。
这里有一些我的头脑:
Sub examples()
'store an example date
Dim dt As Date
dt = CDate("March 7, 2018")
'now to add 9 hours:
Debug.Print dt + (9 / 24)
'or, using DateAdd:
Debug.Print DateAdd("h", 9, dt)
'or, add a time:
Dim tm As Date
tm = CDate("9:00 am")
Debug.Print dt + tm
'or, as text:
Dim str As String
str = Format(dt, "mmm d, yyyy")
str = str & " 9:00 am"
Debug.Print CDate(str)
'or, with TimeValue:
Debug.Print dt + TimeValue("9:00")
'or, get extract the date from a datettime and add a different time:
Debug.Print DateValue(Now()) + TimeValue("9:00")
End Sub
哪种方法最好取决于你究竟想用它做什么。
在Excel和VBA中,日期(或日期时间)仅数字从以下开始:
1900年1月0日午夜
...并按 1 per day
增加。
1 = January 1, 1900, 00:00:00 (00:00 = midnight)
2 = January 2, 1900, 00:00:00
43166 = March 7, 2018
需要在1900年1月2日上午9点成功吗?
1小时 1 / 24 一天。
∴9:00 am
= (9 ÷ 24)
= 0.375
∴2.375
= January 2, 1900 9:00 am
类似地:
∴9:00 pm
= (18 ÷ 24)
= 0.875
∴2.875
= January 2, 1900 9:00 pm
早上6:00 = 0.25(¼天) NOON = 0.5(½天) 下午6:00 = 0.75(¾天)
1小时≈0.417 1分钟≈0.000695 1秒≈0.000011574
到夏天多少天?
Today = 43166 (March 7, 2018)
Summer begins = 43272 (June 21, 2018) [Northern Hemisphere]
43272 - 43166 = 106 days
到夏天要几个小时?
106 × 24 = 2544 hours
...你明白了。☺
Excel中可能的最长时间:
Friday, December 31, 9999 23:59:59 = 2958465.99998843
(......所以不要为那个周末做任何计划。)
Microsoft.com: How to use dates and times in Excel
Office.com:Date and time functions (reference)
Stack Overflow / MSDN:Rounding Date & Time in Excel