Oracle实现使用时间函数查询出‘“上午好/下午好”
参考文章:
Oracle日期相关参考文章:http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html
描述:
最近在进行报表开发的时候,碰见一个需求,困扰了很久:用户需要定制一个欢迎页,当用户上午登录时,页面提示“xxx,上午好!”,当用户下午登录时,提示“xxx,下午好!”,看似简单的需求,在报表开发中却不容易实现。下面给大家整理一下要实现这种效果的各种方法。
实现方式1:直接使用Oracle的日期函数实现:
知识点1(两个内置日期函数):
–可以获取上午下午的方式1
–返回单位为毫秒的当前UTC时间(GMT+0)的时间戳。
select current_timestamp from dual;
返回日期格式:10-8月 -19 08.52.54.488652 下午 +08:00
–可以获取上午下午的方式2
–返回会话中的日期和时间,没有参数,没有括号
select localtimestamp from dual;
返回如期格式:10-8月 -19 08.53.23.875886 下午
知识点2(substr函数截取):
substr截取:
平时使用比较多,不过多介绍:
用法:select substr(字符串,起始位置,截取位数) from dual;
注意:如果要从后面往前面截取的话,将起始位置的数值换成负数就行;
所以最终实现的语句如下:
函数1:
select substr(current_timestamp,-9,2) from dual;
函数2:
select substr(localtimestamp,-2,2) from dual;
实现方式2:使用html实现“上午好/下午好/晚上好”
直接上代买:
<body>
<script language="javaScript">
now = new Date(),hour = now.getHours()
if(hour < 6){document.write("凌晨好!")}
else if (hour < 9){document.write("早上好!")}
else if (hour < 12){document.write("上午好!")}
else if (hour < 14){document.write("中午好!")}
else if (hour < 17){document.write("下午好!")}
else if (hour < 19){document.write("傍晚好!")}
else if (hour < 22){document.write("晚上好!")}
else {document.write("夜里好!")}
</script>
</body>
实现方式3:使用js实现“上午好/下午好/晚上好”
妆发:https://blog.csdn.net/weixin_37865166/article/details/89477683
代码如下:
let getTimeState = () => {
// 获取当前时间
let timeNow = new Date();
// 获取当前小时
let hours = timeNow.getHours();
// 设置默认文字
let text = ``;
// 判断当前时间段
if (hours >= 0 && hours <= 10) {
text = `早上好`;
} else if (hours > 10 && hours <= 14) {
text = `中午好`;
} else if (hours > 14 && hours <= 18) {
text = `下午好`;
} else if (hours > 18 && hours <= 24) {
text = `晚上好`;
}
console.log(`hours >>>>>`, hours);
console.log(`text >>>>`, text);
// 返回当前时间段对应的状态
return text;
};
需要的时候使用即可
let textState=getTimeState()
总结:
在日常的开发过程中,一些需求可以通过各种方式实现,选择自己熟悉的或者适合你开发场景的就行,比如说报表开发过程中,使用sql语句能够实现的东西,就最好不过了。所以这个需求,我使用了第一个方式。