vbs格式化日期及变量调用

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

1、VBS时间格式化

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

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

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

Function   FormateDateTime(sendTime,Para)
	select   case   Para
	Rem   YYYYMMDDHHmmss
	case   "1"
		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)
	Rem   YYYYMMDD
	case   "2"
		sendTime   =   year(sendTime)   &   right( "00"   &   month(sendTime),2)   &   right( "00"   &   day(sendTime),2)
	Rem   YYYY-MM-DD
	case   "3"
		sendTime   =   year(sendTime)   & "-"&   right( "00"   &   month(sendTime),2)   & "-"&   right( "00"   &   day(sendTime),2)
	Rem   YYYY年MM月DD日
	case   "4"
		sendTime   =   year(sendTime)   & "年"&   right( "00 "   &   month(sendTime),2)   & "月"&   right( "00"   &   day(sendTime),2)& "日 "
	Rem   YYYY-MM-DD   HH:mm:ss
	case   "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)
	end   select
		FormateDateTime   =   SendTime
end   Function
MsgBox FormateDateTime(date(), "3")   

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

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

2、SQL中的调用

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

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

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

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

发表评论

您的电子邮箱地址不会被公开。