我有一个数据库表,其中包含DateTime格式的一行日期。我需要做的是获取可用日期的所有不同周数。例如,如果我有以下日期:
03-JAN-13
04-JAN-13
09-JAN-13
sql查询会给我以下周数:1和2。 PS:之后我会将这些值放在下拉列表中(该步骤没有问题)。
那么有人可以告诉我该怎么做吗?
答案 0 :(得分:4)
您没有指定您正在使用的RDBMS,但您可以使用以下内容来获取周数。
您将使用DatePart()
的SQL Server:
select distinct datepart(week, dates) WeekNo
from yourtable
在MySQL中,您可以使用Week()
:
select distinct week(dates)
from yourtable
在Oracle中,您可以使用to_char()
:
select distinct to_char(dates, 'W') WeekNo
from yourtable
在PostgreSQL中,您可以使用以下内容:
select distinct extract(WEEK from dates) WeekNO
from yourtable
将yourtable
替换为您的表名,将dates
替换为您的日期列。
编辑#1:如果您正在使用MS Access,那么您仍然可以使用DatePart()
(这已在MS Access 2003中测试过):
SELECT distinct datepart("ww", dates) as WeekNo
FROM yourtable;
答案 1 :(得分:0)
在您的加载事件或您想要的任何地方,您将放置此VBA代码
Me!myCombo.RowSource = "yourquerytexthere;"
(或者你提出的任何问题......可能是你在Remou为你回答的上一个问题中使用的任何一个问题。)
我认为在这个问题中,您已经知道要查询的内容,您只是在询问设置控件。
该代码只是
Me!myCombo.RowSource = "yourquerystring"
像
Me!myCombo.RowSource = "SELECT distinct datepart("ww", dates) FROM yourtable;"
我在哪里!myCombo是你的组合框的名称。
答案 2 :(得分: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
)
)
/