从日期获取周数到下拉列表中

Posted

技术标签:

【中文标题】从日期获取周数到下拉列表中【英文标题】:get week number from date into dropdownlist 【发布时间】:2013-01-08 17:23:45 【问题描述】:

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

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

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

那么谁能告诉我怎么做?

【问题讨论】:

你用的是什么 rdbms? 注意,在某些文化中,第 # 周可能超过 52 ;-) 【参考方案1】:

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

您将使用的 SQL Server DatePart():

select distinct datepart(week, dates) WeekNo
from yourtable

见SQL Fiddle with Demo

mysql 中你可以使用Week():

select distinct week(dates)
from yourtable

见SQL Fiddle with Demo

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

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

见SQL Fiddle with Demo

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

select distinct extract(WEEK from dates) WeekNO
from yourtable

见SQL Fiddle with Demo

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

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

SELECT distinct datepart("ww", dates) as WeekNo
FROM yourtable;

【讨论】:

我正在使用微软访问 您为我提出的第一个解决方案不起作用。我收到此错误:异常详细信息:System.Data.OleDb.OleDbException:没有为一个或多个必需参数提供值。 @zahidaoui 查看我的最新更新,我添加了对 MS Access 的查询。我刚刚编写并测试它是 MS Access 2003 ok 我试过了,下面是我写的部分代码: OleDbCommand cmd4 = new OleDbCommand("SELECT distinct datepart('ww', date_time) WeekNo from temperature ", cn); OleDbDataReader dr4 = cmd4.ExecuteReader();并收到此错误:异常详细信息:System.Data.OleDb.OleDbException:查询表达式'datepart('ww',date_time)WeekNo'中的语法错误(缺少运算符)。 @zahidaoui 看到我对你上一个问题的回答。【参考方案2】:

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

      Me!myCombo.RowSource = "yourquerytexthere;"

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

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

那个代码就是

    Me!myCombo.RowSource = "yourquerystring"

喜欢

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

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

【讨论】:

【参考方案3】:

Annual ISO week# 表 - 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
    )
  )
/

【讨论】:

以上是关于从日期获取周数到下拉列表中的主要内容,如果未能解决你的问题,请参考以下文章

查询数据库,分解日期以获取年份,并使用唯一年份填充下拉列表

日期选择器如何从下拉列表中选择月份

使用日期选择器填充日期下拉列表

如何直接用java Swing写日期下拉列表框

如何从 BigQuery 下拉列表中绘制多个日期到 Google Data Studio

日期选择器日历被隐藏在下拉列表中