使用vb从ms访问数据库中读取datetime列

时间:2012-10-12 14:38:12

标签: ms-access asp-classic vbscript access-vba

我想从ms访问数据库中读取日期时间。

该列的数据类型为DATETIME,值为:1/27/12 5:10 PM

<html>
<body>
<%



Dim Conn
Dim Rs
Dim sql

Dim sConnection


Dim Today as Date //this gives error - unexpected end of file , i want to display current date and time ??? 


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

 filepath= Server.MapPath ("mydb.mdb") 
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  & filepath

Conn.Open(sConnection)



sql="select * from items;"

Set Rs = Conn.Execute(sql)

if Rs.EOF then

    Response.write("No records found")
else 


    do until rs.eof


            ctime =     rs("itemadditiondatetime")

            Response.write("<br/>Time : <input name='dateandtime[]' value=" & ctime & "/>" & ctime )


            rs.movenext

    loop

end if

Rs.Close
Conn.Close

Set Rs = Nothing
Set Conn = Nothing


%>
</body>
</html>

在所有文本框中仅显示日期(1/27/12),时间未显示,但是当我显示没有文本框时,则显示整个日期时间。我如何在两个文本框中分别获得日期和时间。

另外,我需要将日期格式化为yyyy-mm-dd。

1 个答案:

答案 0 :(得分:2)

如果这是经典的ASP / VBScript:

'Dim Today as Date 
Dim Today ' without declaring data type

您可以使用FormatDateTime功能从ctime值中获取日期和/或时间组件。

FormatDateTime(ctime, 3) ' long time
FormatDateTime(ctime, 2) ' short date

如果您偏好不同于我建议的格式,请参阅其他FormatDateTime选项的链接页面。

我忽略了“需要将日期格式化为yyyy-mm-dd ”。不幸的是,VBScript doesn't provide VBA's Format(ctime, "yyyy-mm-dd")功能。所以我认为你可能需要从ctime中提取年,月和日,然后按照你想要的顺序重新组合它们。

Year(ctime) & "-" & Right("0" & Month(ctime), 2) & _
    "-" & Right("0" & Day(ctime), 2)

我意识到你可以通过让db引擎根据你的意愿为你提供格式化日期和时间来简化你的ASP代码。虽然VBScript不能使用Format()函数,但db引擎可以。

SELECT
    Format(itemadditiondatetime, "hh:nn:ss") AS time_string,
    Format(itemadditiondatetime, "yyyy-mm-dd") AS date_string
FROM items;