### ASP 程序中日期型数据的格式问题探讨

无论是 MIS 还是 INTRANET（INTERNET）开发，日期型数据始终是一个头痛的问题，因为对它的处理不象处理数字或字符串那样随心所欲，而是差之毫厘，程序就不通。

在 WEB-WEBSERVER-DATABASE 三层结构的开发过程中，日期型数据的应用较为频繁，而对不同的数据库，日期格式的定义还不一样，所以在编辑网页时首先应留心一下日期的格式如何定义，否则在进行数据库提交和查询操作时就会出错。ASP（ACTIVE SERVER PAGES）是微软提供的 WEBSERVER -IIS4.0 中的一个服务器端的脚本环境，当运行在服务器端时，WEB 服务器完成脚本的描述，回送到客户端的是标准的 HTML 调用。ASP 直接在 HTML 文件中嵌入脚本，使开发与维护工作变得简单、快捷、灵活。开发工具用普通文本编辑器、FRONTPAGE 98 等都可以。ASP 的脚本只在服务器端解释执行，一般用户在浏览器端无法看到具体的脚本，这对系统的安全性有极大的帮助。目前这方面的应用环境多为 WIN NT+SQL SERVER6+IIS4，笔者除了介绍这个环境下的日期格式之外，还介绍 WIN NT+ORACLE7+IIS4 的应用环境，通过两者的比较，会加深这方面的了解，本文中用到的 ASP 脚本语言是 VB。

1 环境 1

操作系统为 NT4.0,WWW 服务器为 WEB SERVER IIS4.0,数据库为 SQL SERVER6.5。

1．1 和数据源的连接

ODBC 数据源的名字为 name_of_odbc，SQL SERVER 数据库的用户名为 sql_server_dbname，密码为 sql_server_dbpasswd。

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "name_of_odbc","sql_server_dbname","sql_server_dbpasswd"

1．2 用数组变量将 12 个月份存储起来，
1．3 环境 2 中也要用到，
1．4 不
1．5 再重复
1．6 说明

Dim month1_12(12)

month1_12(1)="Jan"

month1_12(2)="Feb"

month1_12(3)="Mar"

month1_12(4)="Apr"

month1_12(5)="May"

month1_12(6)="Jun"

month1_12(7)="Jul"

month1_12(8)="Aug"

month1_12(9)="Sep"

month1_12(10)="Oct"

month1_12(11)="Nov"

month1_12(12)="Dec"

1．3 日期型变量的赋值

INI_TIMEVALUE = Date()

在 FORM 的输出框中显示的式为：1999-4-8

INI_TIMEVALUE = REQUEST(INI_TIMEVALUE)

def_timevalue = DAY(INI_TIMEVALUE) & "-" & month1_12(Month(INI_TIMEVALUE)) & "-" &Year(INI_TIMEVALUE)

def_timevalue 的值是 8-Apr-1999，在入库时，SQL SERVER 只识别这种格式的日期数据。

2 环境 2

2．1 和数据源的连接

ODBC 数据源的名字为 name_of_odbc，ORACLE7 数据库的用户名为 oracle_dbname，密码为 oracle_dbpasswd。

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "name_of_odbc","oracle_dbname","oracle_dbpasswd"

2．2 日期型变量的赋值

INI_TIMEVALUE = Date()

在 FORM 的输出框中显示的式为：1999-4-8

INI_TIMEVALUE = REQUEST(INI_TIMEVALUE)

def_timevalue = DAY(INI_TIMEVALUE) & "-" & month1_12(Month(INI_TIMEVALUE)) & "-" &Year(INI_TIMEVALUE)

def_timevalue 的值是 8-Apr-1999，在入库时，ORACLE7 不识别这种格式的日期数据。而是识别 8-Apr-99 格式的数据，所以，在编程时可将赋值语句调整过来：

def_timevalue = DAY(INI_TIMEVALUE) & "-" & month1_12(Month(INI_TIMEVALUE)) & "-" & mid(Year(INI_TIMEVALUE),3,2)

即将年度取后两位，def_timevalue 的值变为 8-Apr-99，这样，ORACLE7 数据库就能识别了