0

我有一个数据库表,其中包含一行 DateTime 格式的日期。我需要做的是获取可用日期的所有不同周数。例如,如果我有以下日期:

03-JAN-13 
04-JAN-13
09-JAN-13

sql 查询会给我以下周数:1 和 2。 PS:之后我会将这些值放在下拉列表中(这一步没问题)。

那么有人可以告诉我该怎么做吗?

4

3 回答 3

4

您没有指定您使用的 RDBMS,但您可以使用以下内容获取周数。

您将使用的 SQL Server DatePart()

select distinct datepart(week, dates) WeekNo
from yourtable

请参阅带有演示的 SQL Fiddle

在 MySQL 中,您可以使用Week()

select distinct week(dates)
from yourtable

请参阅带有演示的 SQL Fiddle

在 Oracle 中,您可以使用to_char()

select distinct to_char(dates, 'W') WeekNo
from yourtable

请参阅带有演示的 SQL Fiddle

在 PostgreSQL 中,您可以使用以下内容:

select distinct extract(WEEK from dates) WeekNO
from yourtable

请参阅带有演示的 SQL Fiddle

将 替换为yourtable您的表名和dates日期列。

编辑#1:如果您使用的是 MS Access,那么您仍然可以使用DatePart()(在 MS Access 2003 中测试过):

SELECT distinct datepart("ww", dates) as WeekNo
FROM yourtable;
于 2013-01-08T17:28:43.677 回答
0

在您的加载事件中,或任何您想要的地方,您将放置此 VBA 代码

      Me!myCombo.RowSource = "yourquerytexthere;"

(或者您使用的任何查询......可能是您在 Remou 为您回答的最后一个问题中使用的任何一个)。

我认为在这个问题中,您已经知道要查询什么,您只是在询问设置控件。

该代码只是

    Me!myCombo.RowSource = "yourquerystring"

    Me!myCombo.RowSource = "SELECT distinct datepart("ww", dates) FROM yourtable;"

其中 Me!myCombo 是您的组合框的名称。

于 2013-01-08T18:06:40.987 回答
0

年度 ISO 周# 表 - Oracle SQL 查询:

-- ISO_WK# --
 SELECT mydate
      , TRUNC(mydate, 'w') wk_starts
      , TRUNC(mydate, 'w') + 7 - 1/86400 wk_ends
      , TO_NUMBER (TO_CHAR (mydate, 'IW')) ISO_WK#  
  FROM
   (
    SELECT TRUNC(SYSDATE, 'YEAR')-1 + LEVEL AS mydate  
      FROM dual
    CONNECT BY LEVEL <= 
    (-- First day of curr year - first day of past year --
      SELECT TRUNC(SYSDATE, 'YEAR')-TRUNC(ADD_MONTHS (SYSDATE, -12), 'YEAR') "Num of Days"   
        FROM dual
    )
  )
/
于 2013-01-08T19:31:10.837 回答