先说下需求,是在SecureCRT调用VBS脚本实现自动化功能时,里面有一个SQL调用语句,该SQL有一个基于日期条件的查询,这个日期由于不是当天而是前天,所以需要通过VBS脚本将日期先格式化成对应的时间格式,并转化为想要的格式,再通过变量的形式转化使用。

1、VBS时间格式化

VBS取时间有函数date(),如果需要取三天前的日期可以通过如下代码实现:

1Dim tday
2tday = dateadd("d",-3,date)

而输出的时间格式可能不能满足具体的需求,因为这个输出的是YYYY/MM/DD的格式,这个时候就需要格式化为所需的格式,比如这里我想格式化为YYYYMMDD的格式。VBS实现格式化的一个函数写法如下:

 1Function   FormateDateTime(sendTime,Para)
 2    select   case   Para
 3    Rem   YYYYMMDDHHmmss
 4    case   "1"
 5        sendTime   =   year(sendTime)   &   right( "00"   &   month(sendTime),2)   &   right( "00"   &   day(sendTime),2)   &   right( "00 "   &   hour(sendTime),2)   &   right( "00 "   &   minute(sendTime),2)   &   right( "00 "   &   second(sendTime),2)
 6    Rem   YYYYMMDD
 7    case   "2"
 8        sendTime   =   year(sendTime)   &   right( "00"   &   month(sendTime),2)   &   right( "00"   &   day(sendTime),2)
 9    Rem   YYYY-MM-DD
10    case   "3"
11        sendTime   =   year(sendTime)   & "-"&   right( "00"   &   month(sendTime),2)   & "-"&   right( "00"   &   day(sendTime),2)
12    Rem   YYYY年MM月DD日
13    case   "4"
14        sendTime   =   year(sendTime)   & "年"&   right( "00 "   &   month(sendTime),2)   & "月"&   right( "00"   &   day(sendTime),2)& "日 "
15    Rem   YYYY-MM-DD   HH:mm:ss
16    case   "5"
17        sendTime   =   year(sendTime)   & "-"&   right( "00 "   &   month(sendTime),2)   & "-"&   right( "00"   &   day(sendTime),2)   & "   "&   right( "00 "   &   hour(sendTime),2)   & ": "&   right( "00 "   &   minute(sendTime),2)   & ": "&   right( "00 "   &   second(sendTime),2)
18    end   select
19        FormateDateTime   =   SendTime
20end   Function
21MsgBox FormateDateTime(date(), "3")

这里实现的FormateDateTime函数可以实现如下几种格式的时间格式化:

  • YYYYMMDDHHmmss
  • YYYYMMDD
  • YYYY-MM-DD
  • YYYY年MM月DD日
  • YYYY-MM-DD HH:mm:ss

2、SQL中的调用

可以看出上面case 2就是我们需求的格式,所以具体SQL调用转换前的变量为:

1Dim tday
2tday = dateadd("d",-3,date)
3tday = year(tday )   &   right( "00"   &   month(tday ),2)   &   right( "00"   &   day(tday ),2)

对应的SecureCRT里的调用格式为:

1crt.Screen.Send "select * from history where  date > '"& tday & "' ;" & chr(13)