在MySQL中,我有一个包含几列的表,其中一列是日期列。我希望能够进行查询,这样我就可以获得一个额外的列,该列显示了当前日期(每一行的日期)和上一行的日期之间的天数。
记录的顺序是按日期,而我是按其他列过滤的。
例如
id other_col date days_between_dates
1 abc 2013-05-01 0
2 abc 2013-05-07 6
3 abc 2013-05-09 2
4 abc 2013-05-19 10
5 abc 2013-05-25 6
6 abc 2013-06-03 9
7 abc 2013-06-14 11
显然,由于第一行没有可比较的内容,因此应显示0
。
我知道我可以使用datediff
MySQL函数获取两个日期之间的差异,例如
select datediff('2013-06-03','2013-05-25');
我的基本查询是,select * from mytable where other_col = 'something' order by date;
但是如何进行查询以直接获得示例中所示的结果?(我需要额外的“ days_between_dates
”列)。
另请注意,通常ID是有序的,没有空格,但我不能保证。只有我将按升序排序,并按“ other_col”列进行过滤。
您可以按照以下方式进行操作:
SELECT T.id,
T.other_col,
T.yourdate,
IFNULL(datediff(T.yourdate,(select MAX(TT.yourdate)
FROM yourtable TT
WHERE TT.yourdate < T.yourdate
AND TT.other_col = 'abc')),0)
FROM yourtable T
where other_col = 'abc';
你可以在这个小提琴中看到它
这是通过计算当前记录的日期(T.date
)和MAX(TT.date)
小于当前记录的日期(WHERE TT.date < T.date
)的日期中最大的日期()之间的差来实现的。
如果没有更小的日期,则使用COALESCE将其设置为0,而不是null。
编辑。在第一行中添加合并以给出0
我有 2 天名称作为输入(例如:“星期五”和“星期一”。我需要从周五和周一(周五、周六、周日、周一)之间的表格中获取所有日期。如果是“星期二”和“星期四”,我需要得到(星期二,星期三和星期四) 我的桌子是 如果日子是星期五和星期一。我的输出应该是 我试过这个 但不工作,帮我解决这个问题。提前致谢
问题内容: 如何获取JavaScript中两个日期之间的天数?例如,在输入框中指定两个日期: 问题答案: 这是快速的实现,作为解决问题中提出的问题的概念证明。它依赖于这样一个事实,您可以通过减去两个日期来获得两个日期之间经过的毫秒数,这会将它们强制为原始数字值(自1970年初以来的毫秒数)。 您应该注意,“常规”日期API(名称中没有“ UTC”)在用户浏览器的本地时区中运行,因此,如果您的用户所
问题内容: 我有一个表 的学生 这样 我想获取所有记录,但不应重复邮政编码。因此,在上述表记录的情况下,应获取记录1和2。将不会提取第3条记录,因为它的邮政编码已在第1条记录中。 问题答案: 以下查询将仅选择不同的“ zip”字段。 以下查询将选择所有字段以及不同的zip字段。
我差点用LocalDateTime引起一个在线bug,直到,例如: 我最初认为他应该2天回来,但结果是1天! 然后我看了相应的源代码,我现在似乎明白了:如果超过一天,少于两天,它只会返回一天。 我想问一下,Java或Spring中是否有满足我需求的工具。 我想让它回到2天,这符合人们的直觉。 当然,我可以包装一个实用程序类来实现这一点,但我想知道Java中是否有可用的实现? 我的业务场景是这样的:
问题内容: 我想找到两个对象之间的天数差异,如果有日期变化,例如如果时钟从23:59-0:00滴答,则应该有天差。 我写了这个 但是它不起作用,因为如果月差额没有价值,它只会在几天之间产生差额。 问题答案: 在Java 8和更高版本中,我们可以简单地使用java.time类。