SELECT d.i_EmpID as 'EmpID',m.c_EmployeeFirstName as 'First Name',
m.c_employeeLastName as 'Last Name', d.c_date as 'Date', d.c_A as 'A', d.c_M
as 'M', d.c_P as 'P', d.c_lp as 'Lp'
,'School' as Company
FROM [table1].[dbo].[tbl_daily] d
inner join [table2].[dbo].[tbl_emp] m
on d.[i_EmpID] = m.[i_EmpID]
where left(c_date, 2)=datepart(month, getdate()-1) and
right(c_date,4)=datepart(year,getdate()-1) and substring(c_date,
4,2)=datepart(day,getdate()-3)
你好
我正在尝试将上周日期范围从当前日期推迟到过去。现在,我有5个独立的查询,将代码的末尾(day,getdate()-3)合并为一周中的其他5天(我正在寻找星期一至星期五)。从本质上讲,这是我的查询,没有其他四个工会能够将星期一拉到星期五,而且我已经不是这样做的最佳方法,事实上,今天它甚至不起作用。
我能够在MySQL中完成此操作,因为它具有内置的week函数,我可以在上周执行,但是由于语言不同,我不知道如何在SQL中执行操作。我的问题是我的代码昨天工作了,但是由于它减去了星期二至星期五的天数,所以它不起作用/不起作用。我绝不是在SQL中使用日期的专家,我很茫然。
我知道必须有一个更好的方法,我已经花了大约4个小时阅读各种指南和示例,但是我似乎找不到适合我所寻找内容的示例。
总之,我正在尝试在上周的任何一天(例如9/24至9/28)进行拉力操作。因此,即使我在星期五(10/5)运行报告,我也能够看到9/24至9/28,下周也可以看到类似的结果,从而能够将10/1推至本周的10/5。这些是我要拉的表和列。另外,如果重要的话,这不是一个学校项目,而是我所负责的与工作相关的项目。
任何指导将不胜感激。在此先感谢您。
编辑:样本数据:
EID First Last Date A M P LP Company
5303 Kent Grit 09/25/2018 9 44 54 3 Company 1
6890 Lola Grif 09/28/2018 5 4 3 Company 1
6272 Paul Hammer 09/26/2018 1 2 4 4 Company 1
6273 Joe Hammer 09/24/2018 11 8 7 Company 1
答案 0 :(得分:2)
这是您要找的吗?
...
WHERE
CAST(c_date AS DATE) >= DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE())-1, 0)
AND
CAST(c_date AS DATE) < DATEADD(DAY, +5, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE())-1, 0))
从星期日到星期六,它将在上个星期一的午夜和最后一个星期六的午夜拉(这样您就可以在结果集中获得星期五的最后一秒)。
编辑:在每个评论中添加了CAST
。
答案 1 :(得分:1)
这可以通过function deleteEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var datarange = ss.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();
var currentDate = new Date();
for (i = lastrow; i >= 5; i--) {
var tempdate = values[i-1][5];
if (tempdate < currentDate)
{
ss.getRange(i-1, 8).deleteCells(SpreadsheetApp.Dimension.ROWS);
ss.getRange(i-1, 9).deleteCells(SpreadsheetApp.Dimension.ROWS);
ss.getRange(i-1, 10).deleteCells(SpreadsheetApp.Dimension.ROWS);
}}}
和dateadd
函数进行一些算术实现。
datepart