我的网络服务器位于法国&我的数据库有欧洲巴黎时区集...... 我的网站实际上是供居住在葡萄牙的人使用,他们比法国人少了-1H ......
我正在使用此查询来得到喜欢的一周。问题是当法国的新一周在00:30周一假设时,它应该仍然给我上周葡萄牙的结果,因为它仍然是周日23点30分....
df <- read.table(text=
"12/17/2012
1945
1950
2032
2/24/2012
2206
2209
2211
", stringsAsFactors = FALSE)
names(df) <- "original_time"
library(dplyr)
library(stringr)
library(zoo)
df %>%
mutate(event_date = if_else(str_detect(original_time, "/"), original_time, as.character(NA)),
event_time = if_else(str_detect(original_time, "/"), as.character(NA), original_time),
event_date = na.locf(event_date)) %>%
filter(!is.na(event_time)) %>%
mutate(event_date_time = paste(event_date, event_time),
event_date_time = as.POSIXct(event_date_time, format="%m/%d/%Y %H%M")) %>%
select(event_date_time)
# event_date_time
# 1 2012-12-17 19:45:00
# 2 2012-12-17 19:50:00
# 3 2012-12-17 20:32:00
# 4 2012-02-24 22:06:00
# 5 2012-02-24 22:09:00
# 6 2012-02-24 22:11:00
所以我的问题是,有没有办法用SQL查询做我想要的,或者我只能在php中做到这一点?
答案 0 :(得分:1)
我认为你可以做这样的事情
"SELECT COUNT(*) as likes, user
FROM likes_week WHERE date_column
BETWEEN DATEADD(hh, -1, GETDATE())
AND DATEADD(week,-1,GETDATE())
GROUP BY user ORDER BY likes"
请记住,我假设您的日期列的名称是'date_column' 我在1小时前和1周前约会。
希望这有帮助!
答案 1 :(得分:0)
这取决于您如何存储日期和时间。次。
如果那是TIMESTAMP - 它只是Unix时间形式的简单UTC。它会自动转换为服务器的时区,指定或默认。
如果是DATETIME - 时区应该在。
那么这取决于你如何将它写入数据库。如果服务器在法国,并且时区设置正确,并且MySQL正在使用默认设置 - 所有DATETIME值都应该在法国时区。