当前位置: 首页 > 面试题库 >

SQL获得ISO周的“泪SO年”

艾茂学
2023-03-14
问题内容

我需要计算一周分配给的年份。例如,将2003年12月29日指定为2004年的第一周(我认为这仅适用于欧洲)。您可以使用以下代码查看一下:

SELECT DATEPART(isowk, '20141229');

但是,现在我需要一种简单的方法来获取本周的年份。我目前所做的并不那么优雅:

DECLARE @week int, @year int, @date char(8)

--set @date = '20150101'
set @date = '20141229'


SET @week = cast(datepart(isowk, @date) as int)

if @week = 1
begin
      if DATEPART(MONTH, @date) = 12
      begin
            set @year = DATEPART(year, @date) + 1
      end
      else
      begin
            set @year = DATEPART(year, @date)
      end
end

select @date "DATE", @week "WEEK", @year "YEAR"

如果有人知道更优雅的方式,那将是很好的:-)


问题答案:

该解决方案没有为date返回正确的值'1-1-2027'

以下内容将返回我测试过的所有日期(以及测试了很多时间)的正确值。

SELECT YEAR(DATEADD(day, 26 - DATEPART(isoww, '2012-01-01'), '2012-01-01'))

摘自:https :
//capens.net/content/sql-year-iso-week



 类似资料:
  • 问题内容: 我有一个ISO 8601年和周的编号,我需要将此值转换为该周(星期一)的第一天的日期。我怎样才能做到这一点? datetime.strptime()同时使用和指令,但都不遵守datetime.isocalendar()使用的ISO 8601工作日规则。 更新: Python的3.6支持的,并指令也存在于libc中,使这一个班轮: 更新2 :Python 3.8添加了该方法,该方法更加直

  • 问题内容: 下面的代码应在上周五的16:00:00返回。但它返回上周的星期五。如何解决? 更新。我现在使用以下方法-最好的方法吗? Upd2。仅举一个例子。假设今天是 2012年10月5日 。如果当前时间等于或小于 16:00 ,则应返回 2012年9月28日 ,否则返回 2012 年 10月5日 。 问题答案: 与链接的问题一样,您需要使用对象而不是。要获得最终结果,可以使用:

  • 在PHP中通过< code>date('c')很容易获得ISO 8601日期字符串(例如,< code > 2004-02-12t 15:19:21 00:00 ),但是在Objective-C (iPhone)中如何获得它呢?有没有类似的捷径? 这是我发现的很长的路要走: 对于如此核心的东西来说,这似乎是一个非常严格的要求。

  • 问题内容: 我想从表中选择一些行,这些行具有某些在编写存储过程时尚不知道的值。例如,在图书馆数据库中搜索特定类型的书籍: 凡我想成为一个运行,也许下一个,这取决于用户的选择。如何在运行时更改表达式? 不幸的是,我仍然有很多关于SQL的知识,并且不确定我是否在问一个有意义的问题。我将不胜感激! 问题答案: 这比您在SQL Server 2005中可能想像的要棘手(2008具有表值参数,这使其更容易)

  • 问题内容: 我正在构建一些使用参数化值的准备好的语句。举个例子: 有时可能是。在这种情况下,我希望查询返回其中is的记录,但是上面的查询不会这样做。我了解到可以使用运算符。换一种说法: 除了对的不同处理之外,还有其他两种方式可以使上述两个语句的行为有所不同?如果不是,而是说,那该怎么办?在这种情况下,使用操作员是安全(又理智)的事情吗?我应该采取其他方法吗? 问题答案: 您需要从Foo获得Bar

  • 问题内容: 在SQL I中,(不幸的)我经常不得不使用“ ”条件,因为数据库违反了几乎所有的规范化规则。我现在无法更改。但这与问题无关。 此外,我经常使用条件来提高SQL语句的可读性和灵活性。 有没有可能在不编写复杂的子选择的情况下将这两件事结合起来的方法? 我想要一些简单而不是这样的东西: 我在这里使用SQl Server和Oracle,但是我很感兴趣是否可以在任何RDBMS中实现。 问题答案: