- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
给定以下 mysql 表:
ID|name|year|month|day
----------------------
1 |john|1978|5|1
2 |mike|1979|7|23
3 |bob |1985|2|14
4 |joe |1964|2|16
5 |jane|1975|9|22
我正在尝试按照生日事件的顺序提取用户,即将到来的生日排在第一位。因此,如果查询在 9 月 16 日执行,则顺序应为:jane、bob、joe、john、mike。
最佳答案
SELECT u.*, CAST(CONCAT_WS('.', YEAR(SYSDATE()) + (CAST(CONCAT_WS('.', YEAR(SYSDATE()), month, day) AS DATE) < SYSDATE()), month, day) AS DATE) AS nbd
FROM t_users u
ORDER BY
nbd;
ORDER BY
表达式获取当前年份生日与当前日期的比较 bool 结果,并将其添加到当前年份。
这会导致下一个生日(表示为 DATE
),在此之前可以对语句进行排序。
作为奖励,您可以轻松获得下一个生日:
5, 'jane', 1975, 9, 22, '2009-09-22'
3, 'bob', 1985, 2, 14, '2010-02-14'
4, 'joe', 1964, 2, 16, '2010-02-16'
1, 'john', 1978, 5, 1, '2010-05-01'
2, 'mike', 1979, 7, 23, '2010-07-23'
更新:
此查询可以更好地处理闰年。
SELECT u.*, CAST(CONCAT_WS('.', year, month, day) AS DATE),
CAST(CONCAT_WS('.', 1980, month, day) AS DATE) + INTERVAL YEAR(SYSDATE()) - 1980 YEAR +
INTERVAL CAST(CONCAT_WS('.', 1980, month, day) AS DATE) + INTERVAL YEAR(SYSDATE()) - 1980 YEAR < SYSDATE() YEAR AS nbd
FROM t_users u
ORDER BY
nbd;
假设 Feb 29
出生的人的非闰年生日是 Feb 28
。
我添加了一个名叫 Alex
的人,他出生于 1980 年 2 月 29 日
:
5, 'jane', 1975, 9, 22, '1975-09-22', '2009-09-22'
3, 'bob', 1985, 2, 14, '1985-02-14', '2010-02-14'
4, 'joe', 1964, 2, 16, '1964-02-16', '2010-02-16'
6, 'alex', 1980, 2, 29, '1980-02-29', '2010-02-28'
1, 'john', 1978, 5, 1, '1978-05-01', '2010-05-01'
2, 'mike', 1979, 7, 23, '1979-07-23', '2010-07-23'
关于sql - 按自然顺序提取生日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433821/
我有一套使用两种语言的文档:英语和德语。关于这些文档没有可用的元信息,程序只能查看其内容。基于此,程序必须决定用哪种语言编写文档。 是否有可以在几个小时内实现的针对该问题的“标准”算法?或者,一个免费
背景 我有一个日志系统,可以将记录输出到 std::ostream .每条记录都用一个计数器进行注释,该计数器随着每个输出而增加 1,如下所示: ===== Batch # 5 ===== T
用户可能希望根据需要分隔数字。 从字符串中提取所有(自然)数字的最有效(或简单的标准函数)是什么? 最佳答案 您可以使用正则表达式。我从 Sun's regex matcher tutorial 修改
我认为如果表有代理键而没有(自然)替代键是没有意义的(请记住,代理键的属性之一是它在数据库之外没有意义环境)。 例如假设我有下表: 假设 employee_id 是代理主键,表中没有(自然)备用键。
我想将屏幕方向锁定为其默认方向。我在实现这一点时遇到问题。最初我将屏幕锁定为 list 中的肖像。它适用于纵向默认设备。但是许多平板电脑默认为横向,因此在这些设备中锁定纵向是不合适的,我想检测此默认方
我已将笔记本电脑上的触摸板滚动设置为倒置(自然)。它适用于任何地方(pdf、浏览器等),但在 vscode 中,它坚持正常滚动。通过 vscode 的设置文件没有显示适当的条目。 系统:Ubuntu
在我发现的许多在上限集合上使用可尾游标的示例中,代码包括: hint( { $natural: 1 } ) (例如 here ),包括官方文档 ( here ),以“确保我们不使用任何索引”,并且结果
@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: T
一些上下文:Node.js、Bot、natural module . 我想构建一个机器人,并且我正在使用自然模块来解析用户输入并对其进行总体分类。 var classifier = new natur
我是一名优秀的程序员,十分优秀!