MySQL Query для выбора данных с прошлой недели? - PullRequest
88 голосов
/ 22 мая 2011

Привет, у меня есть таблица с полем даты и другой информацией.Я хочу выбрать все записи за прошлую неделю (неделя начинается с воскресенья).

значения таблицы:

id  date
2   2011-05-14 09:17:25
5   2011-05-16 09:17:25
6   2011-05-17 09:17:25
8   2011-05-20 09:17:25
15  2011-05-22 09:17:25

Я хочу выбрать все идентификаторы с прошлой недели, ожидаемый результат 5, 6, 8. (идентификатор 2 не на прошлой неделе, а идентификатор 15 на текущей неделе.)

Как написать и SQL-запрос для того же.

Ответы [ 19 ]

1 голос
/ 05 апреля 2017

Приведенный выше запрос не будет работать.После предложения where, если мы не можем CAST значение столбца, оно не будет работать.Вы должны cast значение столбца.

Например:

SELECT.....
WHERE CAST( yourDateColumn AS DATE ) > DATEADD( DAY, -7, CAST( GETDATE() AS DATE )
0 голосов
/ 15 июля 2019

Для получения дополнительной информации Как и в прошлом месяце, в прошлом году, за последние 15 дней, за последние 3 месяца

Извлечь последнюю неделю записи

Использование приведенного ниже запроса MySQL для извлечения записей за последнюю неделю из таблицы базы данных mysql.

SELECT name, created_at 
FROM employees
WHERE
YEARWEEK(`created_at`, 1) = YEARWEEK( CURDATE() - INTERVAL 1 WEEK, 1)
0 голосов
/ 27 мая 2017

i Используйте это для начала недели с воскресенья:

SELECT id FROM tbl
WHERE
date >= curdate() - INTERVAL DAYOFWEEK(curdate())+5 DAY  
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-2 DAY
0 голосов
/ 20 апреля 2017

Вы также можете использовать это esay способ

SELECT *
FROM   inventory
WHERE  YEARWEEK(`modify`, 1) = YEARWEEK(CURDATE(), 1)
0 голосов
/ 22 ноября 2016
WHERE yourDateColumn > DATEADD(DAY, -7, GETDATE()) ;
0 голосов
/ 22 мая 2011

Если вы уже знаете даты, то можете просто использовать между ними, например:

SELECT id    
FROM `Mytable`    
where MyDate BETWEEN "2011-05-15" AND "2011-05-21"
0 голосов
/ 06 декабря 2014
SELECT id  FROM tb1
WHERE 
YEARWEEK (date) = YEARWEEK( current_date -interval 1 week ) 
0 голосов
/ 25 ноября 2015

Попробуйте это:

Declare @Daytype varchar(15),
        @StartDate datetime,
        @EndDate datetime
set @Daytype = datename(dw, getdate())

if @Daytype= 'Monday' 
    begin
        set @StartDate = getdate()-7 
        set @EndDate = getdate()-1

    end


else if @Daytype = 'Tuesday'

    begin
        set @StartDate = getdate()-8 
        set @EndDate = getdate()-2

    end
Else if @Daytype = 'Wednesday'
    begin
        set @StartDate = getdate()-9
        set @EndDate = getdate()-3
    end
Else if @Daytype = 'Thursday'
    begin
        set @StartDate = getdate()-10 
        set @EndDate = getdate()-4
    end

Else if @Daytype = 'Friday'

    begin
        set @StartDate = getdate()-11
        set @EndDate = getdate()-5

    end

Else if @Daytype = 'Saturday'

    begin
        set @StartDate = getdate()-12
        set @EndDate = getdate()-6

    end

Else if @Daytype = 'Sunday'

    begin
        set @StartDate = getdate()-13
        set @EndDate = getdate()-7

    end

 select @StartDate,@EndDate
0 голосов
/ 24 ноября 2015

Я часто провожу быструю проверку "на прошлой неделе", и следующее имеет тенденцию работать хорошо для меня и включает сегодня.

DECLARE @StartDate DATETIME 
DECLARE @EndDate DATETIME 

SET @StartDate = Getdate() - 7 /* Seven Days Earlier */
SET @EndDate = Getdate() /* Now */

SELECT id 
FROM   mytable 
WHERE  date BETWEEN @StartDate AND @Enddate 

Если вы не хотите включать сегодня, просто вычтите дополнительный день из @EndDate. Если я сегодня выберу эти две переменные, получу

@ StartDate 2015-11-16 16: 34: 05.347 / * Последний понедельник * /

@ EndDate 2015-11-23 16: 34: 05.347 / * В этот понедельник * /

Если бы я хотел с воскресенья по воскресенье, у меня было бы следующее.

SET @StartDate = Getdate() - 8 /* Eight Days Earlier */
SET @EndDate = Getdate() - 1  /* Yesterday */

@ StartDate 2015-11-15 16: 34: 05.347 / * Предыдущее воскресенье * /

@ EndDate 2015-11-22 16: 34: 05.347 / * В прошлое воскресенье * /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...