我试图在sql中获取天数(由by datediff计算)和c#中的天数(由DateTime.now.Substract计算)相同,但它们返回不同的结果....
//returns 0
int reso = DateTime.Now.Subtract(expirationDate).Days;
VS
//returns 1
dateDiff(dd,getDate(),ExpirationDate)
在这两种情况下,ExpirationDate都是'10/1/2011 00:00:00',代码和数据库位于同一台服务器上.我希望return int是相同的.我怀疑我错过了一些愚蠢的想法?
我需要计算MySQL中两个日期之间的差异(以天为单位),不包括周末(周六和周日).也就是说,天数之差减去周六和周日之间的数量.
目前,我只计算使用日期:
SELECT DATEDIFF('2012-03-18', '2012-03-01')
Run Code Online (Sandbox Code Playgroud)
这个回归17,但我想排除周末,所以我想12(因为第3和第4,第10和第11和第17是周末的日子).
我不知道从哪里开始.我知道WEEKDAY()函数和所有相关函数,但我不知道如何在这种情况下使用它们.
我在将分钟转换为小数时遇到了一些问题,尽管我已经查看了SO的其他回复.
select cast(datediff(minute, min(start_time), min(complete_time)) as decimal (10,10))
from TRACKED_OBJECT_HISTORY TOH1
where TOH1.op_name = 'Assembly'
Run Code Online (Sandbox Code Playgroud)
结果返回,但我总是得到像2.00,4.00,5.00这样的结果而不是像1.86,3.99,5.03这样的数字.我想这是事后的转换(我也试过转换功能无济于事).有什么想法吗?
我有两个带有以下表达式的计算列(MonthsInService和YearsInService).
MonthsInService = (datediff(month,[DateEngaged],getdate()))
YearsInService = (datediff(month,[DateEngaged],getdate())/(12))
现在,如果例如DateEngaged = 2012-April-09和getdate()是2013年4月 - 08,则MonthsInService返回12并且YearsInService为1.
我的申请要求YearsInService为零,因为在员工成立一周年之前还有一天要走.
我甚至不确定如何最好地处理MonthsInService列,因为几个月有不同的天数.
有没有办法显示两个不同时间之间的差异.我目前有2个按钮.
Sub AddButtonClick(sender As Object, e As EventArgs)
StartTime.Text = DateTime.Now.ToString()
End Sub
Run Code Online (Sandbox Code Playgroud)
这会生成第一个时间戳
Sub EndBreakClick(sender As Object, e As EventArgs)
EndTime.Text = DateTime.Now.ToString()
DateDiff(DateInterval.Minute, Endtime, StartTime)
End Sub
Run Code Online (Sandbox Code Playgroud)
这会生成第二个时间戳,但是当我按下按钮时,datediff行会导致应用程序崩溃.
在 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
Run Code Online (Sandbox Code Playgroud)
显然,由于第一行没有什么可比较的,它应该显示0.
我知道我可以使用datediffMySQL 函数获得两个日期之间的差异,例如
select datediff('2013-06-03','2013-05-25');
Run Code Online (Sandbox Code Playgroud)
我的基本查询是,select * from mytable where other_col = 'something' order by date;
但如何进行查询以直接获得示例中的结果?(我需要额外的“ days_between_dates”列)。
还要注意,通常 id 是有序的,没有间隙,但我不能保证。只是我会按升序日期排序,并按“other_col”列过滤。
我有一个TABLEwith Columns: USER_ID,TIMESTAMP和ACTION
每一行都告诉我哪个用户在某个时间戳做了什么操作。
例子:
我想要一个用户列表,其中包含启动应用程序的第一行和关闭应用程序的最后一行之间的时间差。
这是我尝试这样做的方法:
SELECT USER_ID,DATEDIFF(
(SELECT timestamp FROM MOBILE_LOG WHERE ACTION="START_APP" AND USER_ID="Alice" order by TIMESTAMP LIMIT 1),
(SELECT timestamp FROM MOBILE_LOG WHERE ACTION ="CLOSE_APP" AND USER_ID="Alice" order by TIMESTAMP LIMIT 1)
) AS Duration FROM MOBILE_LOG AS t WHERE USER_ID="Alice";
Run Code Online (Sandbox Code Playgroud)
我要求两个 SELECT 查询之间的 DATEDIFF,但我只得到一个 Alice`s 的列表,其中 -2 作为 Duration。
我在正确的轨道上吗?
我有一张这样的表:
RecordID TransDate
1 05-Oct-16 9:33:32 AM
2 05-Oct-16 9:33:37 AM
3 05-Oct-16 9:33:41 AM
4 05-Oct-16 9:33:46 AM
5 05-Oct-16 9:33:46 AM
Run Code Online (Sandbox Code Playgroud)
我需要得到连续TransDate值之间的差异。我正在使用 SQL Server 2014,并且知道一种使用 LAG 函数来执行此操作的方法,但我不知道该怎么做。
我需要这个输出:
RecordID TransDate Diff
1 05-Oct-16 9:33:32 AM 0:00:00
2 05-Oct-16 9:33:37 AM 0:00:05
3 05-Oct-16 9:33:41 AM 0:00:04
4 05-Oct-16 9:33:46 AM 0:00:05
5 05-Oct-16 9:33:46 AM 0:00:00
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
提前致谢!
我有一个包含两个日期时间(StartDateTime、EndDateTime)的表,我想计算两者之间的分钟数。
现在,我知道使用 DATEDIFF() 函数来获取此值,但我只想获取两个 TIME(0) 值之间的分钟数。
例如:
StartDateTime | EndDateTime | TimeStart | TimeEnd
2017-06-01 03:00:00 | 2017-06-01 23:00:00 | 06:00:00 | 20:00:00
Run Code Online (Sandbox Code Playgroud)
对于上面的例子,我会得到:
DATEDIFF(minute, StartDateTime, EndDateTime) = 1200。
但是,我只想获取TimeStart和之间的分钟数TimeEnd,即 840。
我该如何编写查询来获得这个?
我是 SQL Server 的新手,我对 lag() 函数有一些疑问。我必须计算两个用户活动之间的平均距离(以天为单位)。然后,我必须对所有用户进行 GROUP BY,计算每个用户行之间的所有日期差异,最后选择该组的平均值。
为了清楚起见,我有这样的表格:

首先,我必须过滤活动天数(活动!=0)。然后我必须创建这个:

最后,预期的结果是这样的:

我认为这可能是一种“某种”代码:
select userid, avg(diff)
(SELECT *,DATEDIFF(day, Lag(dateid, 1) OVER(ORDER BY [Userid]),
dateid) as diff
FROM table1
where activities!=0
group by userid) t
group by userid
Run Code Online (Sandbox Code Playgroud)
当然是行不通的。我想我还必须做一个 while 循环,因为每个用户的 rownumber 都会发生变化。
我希望你能帮助我!非常感谢您