我可以想象按日期对表进行分区(特别是对日志进行分区)是一种广泛使用的方法,但是我找不到解决我问题的好方法。
我想按周创建一个表分区(记录数量大到每月都可以)。之所以要每周一次,是因为我需要算法的数据,该算法将在过程中查找日期。
我的问题是我希望它考虑周并使用“典型”方法来创建分区,所以我必须手动创建它。这样的事情。
CREATE TABLE measurement_y2013w01 (
CHECK ( logdate >= DATE '2013-01-07' AND logdate < DATE '2013-01-14' )
) INHERITS (measurement);
CREATE TABLE measurement_y2006w02 (
CHECK ( logdate >= DATE '2013-01-14' AND logdate < DATE '2013-01-21' )
) INHERITS (measurement);
...
Run Code Online (Sandbox Code Playgroud)
但是我希望它能自动完成。我不想为每个星期一个一个地创建分区。
我给命名的规则是yYYYYwWW来命名分区或开始datadYYYYMMDD。
我想在插入时使用类似以下的方法检查分区:
SELECT
nmsp_parent.nspname AS parent_schema,
parent.relname AS parent,
nmsp_child.nspname AS child,
child.relname AS child_schema
FROM pg_inherits
JOIN pg_class parent ON pg_inherits.inhparent = parent.oid
JOIN pg_class child ON pg_inherits.inhrelid = child.oid
JOIN pg_namespace nmsp_parent ON nmsp_parent.oid = …Run Code Online (Sandbox Code Playgroud) 我需要在php中获取周数,其中周数应该从星期日算起.默认情况下它是星期一.请帮我找一个如何在星期日作为开始日获取周数的方法.
在php手册ISO-8601周的一年中,周从星期一开始(在PHP 4.1.0中添加)
但我需要获得一周的周数,周日从周日开始.
谢谢
我有一组日期,我必须获得本月的一周,有很多文献说明如何使用VBA代码获取一年中的一周,而不是如何获得当月的周数.例如03年3月13日将进行第3周的第1周,而不是第10周的结果.
所有帮助apreciated
在常规SQL中我可以做类似的事情
SELECT * From T GROUP BY DATEPART(wk, T.Date)
Run Code Online (Sandbox Code Playgroud)
我怎么能在Linq to SQL中做到这一点?
以下不起作用
From F In DB.T Group R By DatePart(DateInterval.WeekOfYear, F.Date)
Run Code Online (Sandbox Code Playgroud)
也不工作:
From F In DB.T Group R By (F.Date.DayOfYear / 7)
Run Code Online (Sandbox Code Playgroud) 用Joda-Time图书馆代表一年中最好的方式是什么?我正在寻找一些像YearMonth年份一样优雅的东西.
我需要当前的周数,如果我没有完全弄错,现在是第51周?但是,当在控制台中测试时,我得到了这个.
Time.now
=> 2013-12-19 11:08:25 +0100
Time.now.strftime('%U')
=> "50"
Date.today
=> Thu, 19 Dec 2013
Date.today.strftime("%U").to_i
=> 50
Run Code Online (Sandbox Code Playgroud)
这是为什么?
我班上有以下Sub.我没有错误,但结果与ISO-8601标准不符
Private Sub calculateAllProperties(ByVal dt As Date)
Select Case dt.DayOfWeek
Case DayOfWeek.Monday
m_CurrentWeekStartDate = dt
Case DayOfWeek.Tuesday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -1, dt)
Case DayOfWeek.Wednesday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -2, dt)
Case DayOfWeek.Thursday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -3, dt)
Case DayOfWeek.Friday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -4, dt)
Case DayOfWeek.Saturday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -5, dt)
Case DayOfWeek.Sunday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -6, dt)
End Select
'Now we have our start point of m_CurrentWeekStartDate we can calculate all other properties.
m_CurrentWeekStartYear = DatePart(DateInterval.Year, m_CurrentWeekStartDate)
m_CurrentWeekNo = DatePart(DateInterval.WeekOfYear, …Run Code Online (Sandbox Code Playgroud) 在Entity Framework 6中,我可以使用SqlFunctions.DatePart()方法:
var byWeek = data.GroupBy(x => SqlFunctions.DatePart("week", x.Date));
Run Code Online (Sandbox Code Playgroud)
但是这些类(DbFunctions并且SqlFunctions在Entity Framework Core中不可用)(参考)。
所以我的问题是如何在实体框架核心中按周分组?
我试图从日期时间获取星期数,在我的情况下,一周的第一天是星期一,我想遵循FirstFourDays约定。
要检查结果,请检查以下网页:
https://espanol.epochconverter.com/semanas/2020
要获取星期数,我使用以下方法:
System.Globalization.CultureInfo.InvariantCulture.Calendar.GetWeekOfYear();
Run Code Online (Sandbox Code Playgroud)
所以我想获取日期2019-12-29的星期数,所以我使用以下代码:
System.Globalization.CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(new DateTime(2019, 12, 29), System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
Run Code Online (Sandbox Code Playgroud)
结果是第52周。这是正确的。
现在我正在尝试获取2019-12-30的星期数,我得到的星期数是53,这是错误的,因为2019只有52周。实际上,2019-12-30与2020-01-01属于同一周,这是正确的第一周,所以我不明白为什么我可以在同一日期获得两个不同的结果。
我怎么总是能得到正确的结果?还是获取任何日期的星期数的正确方法是什么?
从这个问题起源的gnuplot为什么警告:不好的时候格式字符串,有在gnuplot的一周号码使用时间说明符的发现%W和%U是错在某些情况下。
显然,周数有不同的定义。此外,一周开始时有不同的定义,例如星期日或星期一。常用的周数定义之一(但不在美国和其他一些国家/地区使用)是根据 ISO 8601 定义的。
代码:(说明错误的周数)
### wrong week numbering in gnuplot with %W and %U
reset session
StartDate = "24.12.2020"
myTimeFmt = "%d.%m.%Y"
SecondsPerDay = 3600*24
print " date %a %w %d %j %W %U"
print "===================================="
do for [i=0:20] {
t = strptime(myTimeFmt,StartDate) + i*SecondsPerDay
myDate = strftime(myTimeFmt." %a %w %d %j %W %U", t)
print sprintf("%s", myDate)
}
### end of code
Run Code Online (Sandbox Code Playgroud)
gnuplot 时间说明符:
%a abbreviated name of day of …Run Code Online (Sandbox Code Playgroud) week-number ×10
c# ×2
date ×2
vb.net ×2
.net ×1
.net-core ×1
datetime ×1
excel ×1
gnuplot ×1
group-by ×1
iso ×1
java ×1
jodatime ×1
linq ×1
linq-to-sql ×1
partitioning ×1
php ×1
postgresql ×1
ruby ×1
sql ×1
sql-server ×1
vba ×1