我正在使用此数据库,其中日期COLOMN是数字值而不是日期值。

是的,我知道我可以用MouseClick更改它,但是使用该数据库的所有应用程序都是由我的前任之一制定的(他之后的每个人都忽略了它并建立了它)。因此,如果我将其更改为约会,则很多AF应用程序将失败。 :(

好吧,我正在概述该数据库,从一个特定日期到另一个数据库。我尝试使用下拉列表,但您可以确定,一个列表中的一千个选项非常不便,甚至丑陋。

我宁愿在一天 - 月 - 年度有少量的输入场,但是在数据库中的数字日期中有沃尔兹。我将不得不将日期计算回数值...

必须有一个简单的解决方案。正确的?



我正在将ASP(VBScript)用于该应用程序,它用于Intraweb,并且我有一个访问数据库。

有帮助吗?

解决方案

访问将为您转换为一个数字,如前所述,日期存储为数字。

Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("TestTable")
rs.AddNew
rs!NumberDate = Now()  'Value stored, eg, 39791.4749074074 '
rs.Update

rs.MoveLast

'To show that it converts back to the correct date / time '
Debug.Print Format(rs!NumberDate, "dd/mm/yyyy hh:nn:ss")

编辑评论:这是一个小测试,显示返回日期:

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

strFile = "C:\Docs\LTD.mdb"

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & strFile & ";" & _
       "Persist Security Info=False"

strSQL = "SELECT NumberDate FROM TestTable WHERE NumberDate= #2008/12/7#"

rs.Open strSQL, cn, 3, 3
rs.MoveLast

MsgBox rs.RecordCount

其他提示

对..所以这很容易。我将接受remou的答案,其中numberDate =#2008/12/7#可以做到这一点。

但是,要接近此事,这是我自己摆弄功能的解决方案:

Function DateToNumeric(dayDate)
    DateToNumeric=DateDiff("d","31/12/1899",dayDate) +1 //yup
End Function

    response.Write("9/12/2008, should be 39791.<br /><br />")
    response.write("DateToNumeric('9/12/2008') gives: " &DateToNumeric("9/12/2008")& "<br />")
    response.write("CDate('39791') gives: " &CDate(39791)&"<br /><br />")
    response.write("BECAUSE CDate('1') gives: " &CDate(1))

输出:

2008年9月12日,应为39791。

DateToNumeric('9/12/2008')给出:39791
CDATE('39791')给出:9-12-2008

因为CDATE('1')给出:31-12-1899

这是如此,因此31/12/1899不是零一天,而是第一天。 ://

多谢你们!

Access商店内部作为浮点数(自31.12.1899之类的天数)的日期日期,您是否尝试使用CDATE()将数字转换回日期?您应该能够在那时查询。

另一种可能性是日期存储在数值但未转换(即31121899),在这种情况下,您应该能够使用格式()或day()或note()或月()或年()()()获得适当的日期零件。

希望这可以帮助。

可悲的是,日期存储为39791-> 2008年12月9日。浮点数。

我有一个JavaScript函数(也由同一前任编写),将日期转换为可读格式。相反,这是回到困扰我的数字价值的道路。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top