我仅使用DATETIME跟踪表中每周发生的定期事件。我只关心时间和星期几。
我需要能够将设置的DATETIME转换为当前或即将到来的未来时间。
IE如何将2013-02-22 12:00:00
使用当前日期存储的日期转换为下一个出现的日期?即下个星期五的12:00:002013-03-01 12:00:00
左右,这样我就可以按日期订购活动了?
或者,我可以将时间和星期几分别存储为数字0-6。
更新:
从欧文(Erwin),我得到了类似的东西:
Event.order("date_trunc('week', now()::timestamp) + (start_at - date_trunc('week', start_at))")
除了我得到的第一个日期是星期一,跳过了我所知道的在星期日之前存在的事件(似乎排在最后),这些命令似乎可以排序。
最好的选择是存储atimestamp
或timestamptz
(timestamop with timezone
)。如果您曾经或曾经必须处理多个时区,请进行设定timestamptz
并定义您是否要使用当地时间或UTC或任何其他时间进行操作。
演示如何有效地将时间戳转换为当前星期(一周中的同一天和时间)。假设timestamp
在这里:
SELECT date_trunc('week', now()::timestamp) + (t - date_trunc('week', t))
FROM (SELECT '2013-02-15 12:00:00'::timestamp AS t) x;
诀窍是计算interval
相应星期的开始与给定timestamp
星期之间的,并借助将该值添加到当前星期的开始date_trunc()
。
ISO周从星期一开始,将星期日放在最后。
或者,只给一个星期增加一个星期timestamp
:
SELECT t + interval '1 week';
如果您只想要ORDER BY
,则只需间隔:
ORDER BY (t - date_trunc('week', t))
如果您想将星期日放在首位(平日):
ORDER BY ((t + interval '1d') - date_trunc('week', (t + interval '1d'))
或更简单:
ORDER BY EXTRACT(dow FROM t), t::time
在EXTRACT()上引用手册:
dow
星期几是星期日(0)到星期六(6)
isodow
星期几是星期一(1)到星期日(7)
我只想相对于当前日期订购它们。也就是说,如果是星期二,我想先是星期二,最后是星期一。
在“今天”的午夜包装:
ORDER BY (EXTRACT(dow FROM t)::int + 7 - EXTRACT(dow FROM now())::int) % 7
,t::time
使用模运算符%
根据“今天”移动日期。 使用dow
替代的isodow
,因为首先是0
品牌%
简单。
问题内容: 我正在尝试将日期从格式转换为SQL Server中的格式。 我正在使用以下命令 我尝试在msdn上查找受支持的样式,但没有找到完全匹配的样式。 帮助将不胜感激。 问题答案:
问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。
问题内容: 我有一个测试记录数据库,其中一列“ test_time”定义为日期时间。我想查询有多少不同的日期,因为我想根据日期将测试结果转储到csv中。我现在有以下内容: 但这给了我日期时间而不是日期的列表。当然,我可以在Python中转换它,但是当我使用sqlite时。我做到了。我无法提出sqlalchemy中的等效项。 问题答案: 那将通过使用表达式: 或快捷方式: 如果使用SQLite,请尝
我有一个熊猫列,其中包含时间数据和列数据类型是对象。 如何将列转换为Datatime
问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。
问题内容: 我尝试将其转换为java.sql.Timestamp后插入,并使用以下代码段: 但是,这是给我的 有没有办法在没有毫秒的情况下获得输出? 问题答案: 您可以使用来减少毫秒数: 输出: