sql - 使用 sql 查询在 Access 中填充从 1980-01-01 到今天的日期列

标签 sql ms-access vba

我有一个名为“日期”的 Access 表,并且有一个名为“日期”的单列(格式为“日期”)。我需要将 1980 年 1 月 1 日到今天的日期在列中每次增加 1 天。 1980-01-01 将位于第一行。

如何通过 sql 查询来完成此操作?

最佳答案

如果您有合适的数字表,则可以使用 Access SQL 添加这些日期。

INSERT INTO dates ([Date])
SELECT CDate(n.the_number)
FROM tblNumbers AS n
WHERE n.the_number BETWEEN 29221 AND 42037;

或者从tblNumbers中的1开始并添加偏移量...

INSERT INTO dates ([Date])
SELECT CDate(n.the_number + 29220)
FROM tblNumbers AS n
WHERE n.the_number BETWEEN 1 AND 12817;

但是,如果您没有合适的数字表,则需要创建一个并填充它。这与您开始时的问题类似,仅加载普通数字而不是日期。

最初的任务非常简单,我将使用一次性的 VBA 过程而不是 Access SQL。这个加载我的日期表的时间不到 2 秒,其中包含所需的 12,817 个日期值:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim dte As Date
Set db = CurrentDb
Set rs = db.OpenRecordset("dates", dbOpenTable, dbAppendOnly)
With rs
    For dte = #1/1/1980# To Date
        .AddNew
        ![Date].Value = dte
        .Update
    Next
    .Close
End With

关于sql - 使用 sql 查询在 Access 中填充从 1980-01-01 到今天的日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278115/

相关文章:

mysql - 分区修剪不适用于 DAYOFYEAR

excel文件未保存到宏指定的文件路径

vba - 使用 Excel 2013 隐藏行

excel - 查找文本并更改颜色

mysql - 仅使用来自 TIMESTAMP SQL 的日期

mysql - SQL注入(inject)-MYSQL

php - 尝试在 PHP 中更新数据库时出现 Mysql 错误,并重定向到 null 位置

delphi - 如何将 TMemo 组件中的多行添加到 MS Access 数据库?

ms-access - 自定义 VBA 函数中的智能感知功能?

java - UCanAccess 似乎无法使用 getBytes() 读取 OLE 对象列