sql时间相关的设计

MYSQL

可以使用MySQL内置函数CURDATE()获取当前日期,然后在查询中使用该函数来筛选出日期为当前日期的记录。假设日期字段为date_field,查询语句如下:

SELECT * FROM table_name WHERE date_field = CURDATE();

如果不确定日期字段的字段类型,可以先使用DESC table_name命令查看表结构,找到日期字段的字段类型。一般情况下日期字段的类型为DATEDATETIMETIMESTAMP

如果不确定日期字段的类型,可以使用MySQL内置函数STR_TO_DATE()将日期字段转化成日期类型,然后再使用CURDATE()函数来筛选出日期为当前日期的记录。假设不确定日期字段类型,查询语句如下:

SELECT * FROM table_name WHERE STR_TO_DATE(date_field, '%Y-%m-%d') = CURDATE();

SQL server

在 SQL Server 中,可以使用 DATEPART() 函数来获取日期时间值中的特定部分。例如,可以使用 DATEPART() 函数获取给定日期时间值的年份、月份、日、小时、分钟或秒。然后可以将得到的部分值与所需的值进行比较。

以下是一个示例查询,用于从 table_name 表中获取日期为今天和时间在早上8点到晚上8点之间的记录:

SELECT *
FROM table_name
WHERE
    DATEPART(year, date_field) = YEAR(GETDATE()) AND
    DATEPART(month, date_field) = MONTH(GETDATE()) AND
    DATEPART(day, date_field) = DAY(GETDATE()) AND
    DATEPART(hour, date_field) >= 8 AND
    DATEPART(hour, date_field) < 20

Oracle

一年的第一天

select trunc(sysdate, 'yyyy') from dual;

 一年的最后一天

select add_months(trunc(sysdate, 'yyyy'), 12) - 1 from dual;

如果表中有时间,形式为2000-01-01

想取其中的年或者月或者日(不同数据库的函数方法不同,但是大致思路一样。截取这个时间字段2023-10-08的一取四位,就是年,第六个字符开始取两位为月,第九个字符开始取两位为日):

select SUBSTR(bxrq,1,4) from table

//日期(rq)为: 2023-10-08
select SUBSTR(rq,1,4) from table where id = 1;//年
select SUBSTR(rq,6,2) from table where id = 1;//月
select SUBSTR(rq,9,2) from table where id = 1;//日

取当前时间的年或者月日

select to_char(sysdate,'yyyy' ) from dual

时间的截取:canvert获取sj的类型,取varchar(5),再replace去除”:“

 select REPLACE(convert(varchar(5),sj,108), ':', '') a from table1 where id =1 

DATENAME(param,date);

 

在数据库中,假如有一个数据库,里面的字段有个叫rq的,保存的是日期时间,但是字段类型时char,现在查询某个时间段的记录,该怎么做呢?

简单,只需三步,第一步将这个字段变为日期或者时间格式,看需要

to_date(your_char_date_time_col, 'YYYY-MM-DD HH24:MI:SS')

想要什么格式就改为什么格式

然后将你要的时间段,变为日期或者时间格式:

to_date('2023-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')

 最后查询:

SELECT *
FROM your_table
WHERE to_date(rq, 'YYYY-MM-DD HH24:MI:SS') 
BETWEEN 
    to_date('2023-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
 AND 
    to_date('2023-02-02 23:59:59', 'YYYY-MM-DD HH24:MI:SS');

泛微E9

    var field1 = WfForm.getFieldValue("field111");
    var data=field1.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
    //将表单中的日期字段:2023-01-01,除去‘-’,存入数组。
    var years=data[1];
    var months=data[2];
    var days=data[3];
    alert(years+months+days);
    var date = new Date();
    //年 getFullYear():四位数字返回年份
    //获取当前的日期,并分别获取年月日
    var year = date.getFullYear();
    var month = date.getMonth()+1;
    var day = date.getDate();
    alert(year+month+day);

这中分别获取年月日在判断年月日的差值上以及一些其他特别的情况时,可以用,但是具体比较两个日期之间的天数差,还是将日期转换为ms,相减再获取比较方便。

    const sDate = Date.parse(date)
    const eDate = Date.parse(field1)
    if (sDate === eDate) {
      alert("时间一样");
    }
    const days1 = (eDate - sDate) / (1 * 24 * 60 * 60 * 1000)
    alert(days1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值