我正在使用Access中的MakeTable查询.我想这样做,以便创建表中的一个字段将是2015年1月1日至2015年11月30日期间按时间顺序排列的日期列表.如何在Access查询设计视图中完成此操作?
您可以创建查询:
SELECT DISTINCT
Abs([id] Mod 10) AS N
FROM
MsysObjects;
Run Code Online (Sandbox Code Playgroud)
保存为 qdxNumber10
现在使用笛卡尔连接(乘法)创建一个查询以生成日期:
SELECT
DateAdd("d",[qdxNumber10_0].[N]+[qdxNumber10_1].[N]*10+[qdxNumber10_2].[N]*100,#2/1/2015#) AS [Date]
FROM
qdxNumber10 AS qdxNumber10_0,
qdxNumber10 AS qdxNumber10_1,
qdxNumber10 AS qdxNumber10_2
WHERE
DateAdd("d",[qdxNumber10_0].[N]+[qdxNumber10_1].[N]*10+[qdxNumber10_2].[N]*100,#2/1/2015#) <= #11/30/2015#;
Run Code Online (Sandbox Code Playgroud)
在创建表时将其用作源.
要生成当前年份的所有日期,请使用:
SELECT
DateAdd("d",[qdxNumber10_0].[N]+[qdxNumber10_1].[N]*10+[qdxNumber10_2].[N]*100,DateSerial(Year(Date()),1,1)) AS [Date]
FROM
qdxNumber10 AS qdxNumber10_0,
qdxNumber10 AS qdxNumber10_1,
qdxNumber10 AS qdxNumber10_2
WHERE
DateAdd("d",[qdxNumber10_0].[N]+[qdxNumber10_1].[N]*10+[qdxNumber10_2].[N]*100,DateSerial(Year(Date()),1,1)) <= DateSerial(Year(Date()),12,31);
Run Code Online (Sandbox Code Playgroud)
或DateSerial直接使用:
SELECT
DateSerial(Year(Date()),1,1+[qdxNumber10_0].[N]+[qdxNumber10_1].[N]*10+[qdxNumber10_2].[N]*100) AS [Date]
FROM
qdxNumber10 AS qdxNumber10_0,
qdxNumber10 AS qdxNumber10_1,
qdxNumber10 AS qdxNumber10_2
WHERE
DateSerial(Year(Date()),1,1+[qdxNumber10_0].[N]+[qdxNumber10_1].[N]*10+[qdxNumber10_2].[N]*100) <= DateSerial(Year(Date()),12,31);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4202 次 |
| 最近记录: |