MS-Access VB скрипт конвертировать строку в дату - PullRequest
0 голосов
/ 15 мая 2018

Можете ли вы посоветовать, могу ли я преобразовать эту строку в Date в моей базе данных MS Access, которая, как я полагаю, использует VB. Я получил этот CustNum, созданный во время tx, и похоже, что он использует метку времени, которую я хочу использовать для расчета даты, похоже, мне нужно выполнить какой-то синтаксический анализ, замену дефиса перед преобразованием в CDate, я пробовал пару способов и до сих пор не получилось. В конечном счете, я хочу использовать это значение, чтобы вычислить, сколько времени прошло.

    CustNum = '2018-05-14-154540'
    CDate([CustNum]     ##.... something like this
## to be used in query builder as 
    DaysPassed: CDate([CustNum]) - Now()

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете выполнить какой-то необычный анализ для получения даты и времени:

TimeStamp = CDate(Left(CustNum, 10) & Format(CustNum, " !@@:@@:@@"))

Затем вы можете использовать следующую функцию для отображения используемого времени:

TimeSpent = FormatHourMinuteDiff(TimeStampStart, TimeStampEnd)

Функция:

Public Function FormatHourMinuteDiff( _
  ByVal datTimeStart As Date, _
  ByVal datTimeEnd As Date, _
  Optional ByVal strSeparator As String = ":") _
  As String

' Returns count of days, hours and minutes of difference
' between datTimeStart and datTimeEnd converted to
' hours and minutes as a signed formatted string
' with an optional choice of time separator.
'
' Example:
'   datTimeStart: #10:03#
'   datTimeEnd  : #20:01#
'   returns     : 9:58
'
'   datTimeStart: #22:13#
'   datTimeEnd  : #3:45#
'   returns     : -18:28
'
' 2005-02-05. Cactus Data ApS, CPH.

  Const cintMinutesHour As Integer = 60

  Dim lngMinutes    As Long
  Dim strHour       As String
  Dim strMinute     As String
  Dim strHourMinute As String

  lngMinutes = DateDiff("n", datTimeStart, datTimeEnd)
  strHour = CStr(lngMinutes \ cintMinutesHour)
  ' Add leading zero to minute count when needed.
  strMinute = Right("0" & CStr(Abs(lngMinutes) Mod cintMinutesHour), 2)
  strHourMinute = strHour & strSeparator & strMinute

  FormatHourMinuteDiff = strHourMinute

End Function
0 голосов
/ 15 мая 2018

Сначала вам нужно будет немного разобрать этого плохого парня, чтобы он соответствовал ожиданиям MSAccess. Если формат CustNum изменится, вам нужно написать оператор case, чтобы иметь дело с каждым форматом, но по существу:

CustNum = Left(CustNum, 10) & " " & Mid(CustNum,12,2) & ":" &_ 
Mid(CustNum,14,2) & ":" & Mid(CustNum,16,2)
CustNum = CDATE(CustNum)
DaysPassed = DateDiff("d",CustNum, Now()) 'gives the difference in Days
HoursPassed = DateDiff("h",CustNum,Now())  'gives the difference in hours
MinsPassed = DateDiff("n",CustNum,Now())  'gives the difference in minutes

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...