⑴ sql中如何实现日期运行
日期差想按年、月、日、时、分、秒哪个来算呢?日期直接相减转换成整数的话是差的天数,比如
'2008-1-2 12:00'和 '2008-1-1 13:00'直接相减的话结果是1,即差1天
'2008-1-2 22:00'和 '2008-1-1 13:00'直接相减的话结果也是1
如果在现有表上更新的话语句如下
update 表
set c=cast(cast(B as datetime)-cast(A as datetime) as int)
里边共使用了两层cast语句
内层是防止A、B列不是datetime类型,外层的是把相减的结果转换为int类型
如果设计表时实现,把C列创建为计算接就可以了,创建表的语句如下
create table 表名
(
A datetime,
B datetime,
C as cast(B-A as int)
)
⑵ SQL 当天日期减去一天 应该如何写
SQL语句使用DATEADD得到一个时间加上或减去指定天数之后的时间。也适用于小时、分钟、秒钟等等
DATEADD() 函数功能:在日期中添加或减去指定的时间间
语法:DATEADD(datepart,number,date)
date参数是合法的日期表达式。number是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart参数可以是下列的值:
⑶ SQL 查询语句 查询某天的数据
select * from news where
substring(Convert(char(10),date,112),1,8)='20090112'
按日查
substring(Convert(char(10),date,112),1,8)='20090112'
按月查
substring(Convert(char(10),date,112),1,6)='200901'
按年查
substring(Convert(char(10),date,112),1,4)='2009'
⑷ 某一个字段表示一天,怎么用SQL取连续三天
select begin_dt
from (select begin_dt, count(*) over(partition by ch) cnt
from (select begin_dt,
to_date(begin_dt, 'yyyy-mm-dd') - row_number() over(order by begin_dt) ch
from liur_account)
)
where cnt >= 3;
⑸ SQL语句怎么进行日期间的比较
ResultSet rs1 = cmd.executeQuery("select * from DATE where Dstartdate>='"+today+"'");
⑹ mysql中计算出今天,昨天,近一周,近一月数据sql咋写
首先要考虑给数据库减压,意思就是让数据库做最简单的事情。你可以把条件在php里边组装好,然后让mysql只单一的执行查询就好了,php的时间代码给你贴一下吧
<?php
date_default_timezone_set('Asia/Shanghai');
echo"今天:".date("Y-m-dH:i:s")."<br>";
echo"昨天:".date("Y-m-d",strtotime("-1day")),"<br>";
echo"明天:".date("Y-m-d",strtotime("+1day"))."<br>";
echo"一周后:".date("Y-m-d",strtotime("+1week"))."<br>";
echo"一周前:".date("Y-m-d",strtotime("-1week"))."<br>";
echo"一周零两天四小时两秒后:".date("Y-m-dG:H:s",strtotime("+1week2days4hours2seconds"))."<br>";
echo"下个星期四:".date("Y-m-d",strtotime("nextThursday"))."<br>";
echo"上个周一:".date("Y-m-d",strtotime("lastMonday"))."<br>";
echo"一个月前:".date("Y-m-d",strtotime("lastmonth"))."<br>";
echo"一个月后:".date("Y-m-d",strtotime("+1month"))."<br>";
echo"十年后:".date("Y-m-d",strtotime("+10year"))."<br>";
echo'<hr/>';
//php获取今日开始时间戳和结束时间戳
$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));
$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
echo"今日开始时间戳和结束时间戳",'开始:',$beginToday,'结束:',$endToday,'<br/>';
echo"今日开始时间:",date("Y-m-dH:i:s",$beginToday),'<br/>';
echo"今日结束时间:",date("Y-m-dH:i:s",$endToday),'<br/>';
echo'<hr/>';
//php获取昨日起始时间戳和结束时间戳
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
echo"昨日开始时间戳和结束时间戳",'开始:',$beginYesterday,'结束:',$endYesterday,'<br/>';
echo"昨日开始时间:",date("Y-m-dH:i:s",$beginYesterday),'<br/>';
echo"昨日结束时间:",date("Y-m-dH:i:s",$endYesterday),'<br/>';
echo'<hr/>';
//php获取上周起始时间戳和结束时间戳
$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
echo"上周开始时间戳和结束时间戳",'开始:',$beginLastweek,'结束:',$endLastweek,'<br/>';
echo"上周开始时间:",date("Y-m-dH:i:s",$beginLastweek),'<br/>';
echo"上周结束时间:",date("Y-m-dH:i:s",$endLastweek),'<br/>';
echo'<hr/>';
//php获取本月起始时间戳和结束时间戳
$beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));
$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));
echo"本月开始时间戳和结束时间戳",'开始:',$beginThismonth,'结束:',$endThismonth,'<br/>';
echo"本月开始时间:",date("Y-m-dH:i:s",$beginThismonth),'<br/>';
echo"本月结束时间:",date("Y-m-dH:i:s",$endThismonth),'<br/>';
?>
⑺ 定义用户变量TODAY,并使用一条SET语句和一条SELECT语句把当前的日期赋值给它后显示
SQLSERVER版本:
DECLARE @TODAY DATE
SET @TODAY=GETDATE();
SELECT @TODAY;
--或者 PRINT @TODAY;
ORACLE版本:
DECLARE TODAY DATE;
BEGIN
SELECT SYSDATE INTO TODAY FROM DUAL;
DBMS_OUTPUT.PUT_LINE(TODAY);
END;
⑻ 如何用SQL返回两个日期之间的所有连续日期
在层次查询中,Oracle引入了一个伪列level,用来表示当前行(节点)对应的level,
它从1开始计数,每多一层level的值就加1。
我们可以据此实现对两个日期/整数之间所有日期/整数的遍历。
----------------------------------------------------------
SQL> create table test (begin_date date,end_date date);
Table created
SQL> insert into test values(trunc(sysdate),trunc(sysdate+5));
1 row inserted
SQL> select * from test;
BEGIN_DATE END_DATE
----------- -----------
2010-4-6 2010-4-11
SQL> select begin_date,end_date,begin_date+level -1 as today
2 from test
3 connect by begin_date + level -1 <= end_date;
BEGIN_DATE END_DATE TODAY
----------- ----------- -----------
2010-4-6 2010-4-11 2010-4-6
2010-4-6 2010-4-11 2010-4-7
2010-4-6 2010-4-11 2010-4-8
2010-4-6 2010-4-11 2010-4-9
2010-4-6 2010-4-11 2010-4-10
2010-4-6 2010-4-11 2010-4-11
6 rows selected
------------------------------------------------------------------插入两条记录,看该查询语句是否可行
SQL> insert into test values(trunc(sysdate+4),trunc(sysdate+7));
1 row inserted
SQL> select * from test;
BEGIN_DATE END_DATE
----------- -----------
2010-4-6 2010-4-11
2010-4-10 2010-4-13
SQL> select distinct begin_date+level-1 as today
2 from test
3 connect by begin_date+level-1 <= end_date;
TODAY
-----------
2010-4-7
2010-4-13
2010-4-8
2010-4-11
2010-4-9
2010-4-6
2010-4-10
2010-4-12
8 rows selected
--------------------------------------- 根据最大和最小值得查询
SQL> delete from test where begin_date = to_date('2010-4-10','yyyy-mm-dd');
1 row deleted
SQL> select * from test;
BEGIN_DATE END_DATE
----------- -----------
2010-4-6 2010-4-11
SQL> SELECT one_date
2 FROM (SELECT start_date + level - 1 one_date
3 FROM (SELECT min(begin_date) start_date, max(end_date) end_date
4 FROM test) test
5 connect BY start_date + level - 1 <= end_date ) all_date,
6 test
7 WHERE one_date BETWEEN begin_date AND end_date;
ONE_DATE
-----------
2010-4-6
2010-4-7
2010-4-8
2010-4-9
2010-4-10
2010-4-11
6 rows selected
⑼ java获取昨天的日期和sql如何获得昨天日期
JAVA
importjava.text.Format;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
publicclass${
publicstaticvoidmain(String[]args){
Formatf=newSimpleDateFormat("yyyy-MM-dd");
Calendarc=Calendar.getInstance();
System.out.println("今天:"+f.format(c.getTime()));
c.add(Calendar.DAY_OF_MONTH,-1);
System.out.println("昨天:"+f.format(c.getTime()));
}
}
SQL(MySQL):
selectdate_sub(current_date(),interval1day)
⑽ 在SQL怎样判断日期是否是星期天
EXCEL中判断一个日期是不是今天,用公式=today()可实现;
操作如下:
比如,A2单元格的日期是2016年12月7日,要判断此日期是否今天日期,如下图;
1;在其它空的单元格(比如,D2单元格)上输入公式:=today()
2;然后,按回车键。得出今天日期;
3;A2单元格和D2单元格的日期一比较就知道A2单元格的日期是否是今天的日期了。