您好我正在使用pentaho将表格数据从sql server加载到mysql 加载数据时我需要从sql server一个表到mysql只获得最近7天的数据 在sql server createddate列中,数据类型类似于datetime AND 在mysql created_on column中,数据类型是timestamp
这里我使用了以下查询,但我只获得了5天的数据 请帮我解决这个问题
select id,
NewsHeadline as news_headline,
NewsText as news_text,
state,
CreatedDate as created_on
from News
WHERE CreatedDate BETWEEN GETDATE()-7 AND GETDATE()
order by createddate DESC
答案 0 :(得分:23)
尝试类似:
SELECT id, NewsHeadline as news_headline, NewsText as news_text, state CreatedDate as created_on
FROM News
WHERE CreatedDate >= DATEADD(day,-7, GETDATE())
答案 1 :(得分:6)
我认为过去七天你每天都没有数据。没有数据的天数显然不会出现。
尝试此操作并验证您在过去7天内每天都有数据
SELECT DISTINCT CreatedDate
FROM News
WHERE CreatedDate >= DATEADD(day,-7, GETDATE())
ORDER BY CreatedDate
编辑 - 从您的评论中复制
我有十九进制-1行数据,第18行-2行,第17行-3行,第16行-3 行,第15行-3行,第12行-2行,第11行-4行,第9行-1行,第8行
您没有所有日期的数据。这是你的问题,而不是查询。如果您今天 - 22日执行查询 - 您将只获得第19,18,17,16和15日的数据。你没有第20,21和22日的数据。
编辑 - 要获取过去7天的数据,数据可用,您可以尝试
select id,
NewsHeadline as news_headline,
NewsText as news_text,
state,
CreatedDate as created_on
from News
WHERE CreatedDate IN (SELECT DISTINCT TOP 7 CreatedDate from News
order by createddate DESC)
答案 2 :(得分:5)
select id,
NewsHeadline as news_headline,
NewsText as news_text,
state,
CreatedDate as created_on
from News
WHERE CreatedDate>=DATEADD(DAY,-7,GETDATE())
答案 3 :(得分:1)
希望这会有所帮助,
select id,
NewsHeadline as news_headline,
NewsText as news_text,
state,
CreatedDate as created_on
from News
WHERE CreatedDate >= cast(dateadd(day, -7, GETDATE()) as date)
and CreatedDate < cast(GETDATE()+1 as date) order by CreatedDate desc
答案 4 :(得分:1)
DATEADD和GETDATE函数可能在MySQL数据库中不起作用。因此,如果您使用的是MySQL数据库,则以下命令可能会对您有所帮助。
select id, NewsHeadline as news_headline,
NewsText as news_text,
state, CreatedDate as created_on
from News
WHERE CreatedDate>= DATE_ADD(CURDATE(), INTERVAL -3 DAY);
我希望它将对您有帮助
答案 5 :(得分:1)
这对我有用!
SELECT * FROM `users` where `created_at` BETWEEN CURDATE()-7 AND CURDATE()
答案 6 :(得分:1)
您可以在where子句中使用 DATEADD 函数,例如
struct OtherView: View {
@State var list: [String] = ["Phil Swanson", "Karen Gibbons", "Grant Kilman", "Wanda Green"]
@State var selectKeeper = Set<String>()
var body: some View {
NavigationView {
List(list, id: \.self, selection: $selectKeeper) { item in
if self.selectKeeper.contains(item) {
Text(item).bold()
} else {
Text(item)
}
}.navigationBarItems(trailing: HStack {
if self.selectKeeper.count != 0 {
Button("Send") {
print("Sending selected... \(self.selectKeeper)")
}
}
EditButton()
})
}
}
}
答案 7 :(得分:1)
要提取最近3天而不是当前日期的数据:
date(timestamp) >= curdate() - 3
AND date(timestamp) < curdate()
示例:
SELECT *
FROM user_login
WHERE age > 18
AND date(timestamp) >= curdate() - 3
AND date(timestamp) < curdate()
LIMIT 10
答案 8 :(得分:0)
如果您想使用Pentaho DI进行操作,可以使用“修改后的JavaScript ”步骤并编写以下功能:
dateAdd(d1, "d", -7); // d1 is the current date and "d" is the date identifier
检查下图: [假设当前日期为:2014年12月22日]
希望有所帮助:)