복붙노트

[SQL] 요일과 같은 형식의 날짜

SQL

요일과 같은 형식의 날짜

나는 다른 사람의 사이에 날짜 열 servdate이있는 테이블이있다.

나는 지난 주 (주 월요일부터 시작) 내에서 나에게 모든 작업을 얻기 위해 다음과 같은 쿼리를 사용 :

SELECT * FROM tb1 WHERE servdate BETWEEN date('now', 'Weekday 1', '-21 days') AND date('now')

나는 쿼리가 정확히 같은 일을 대신 주 그에 상응하는 하루로 servdate 필드를 반환합니다. 대신 "2010-11-28"예, "월요일"하십시오.

이게 가능해?

해결법

  1. ==============================

    1.wallyk이 제안 당신은 보조 테이블을 사용할 수 있습니다; 또는 당신이 경우에 식을 사용할 수 있습니다 :

    wallyk이 제안 당신은 보조 테이블을 사용할 수 있습니다; 또는 당신이 경우에 식을 사용할 수 있습니다 :

    select _id, busnum, 
      case cast (strftime('%w', servdate) as integer)
      when 0 then 'Sunday'
      when 1 then 'Monday'
      when 2 then 'Tuesday'
      when 3 then 'Wednesday'
      when 4 then 'Thursday'
      when 5 then 'Friday'
      else 'Saturday' end as servdayofweek
    from tb1
    where ...
    
  2. ==============================

    2.여기 CASE 미만의 입력을 포함하는 제안 ... WHEN 블록. 여기에서, 같은 하위 문자열을 추출하여 수행됩니다 :

    여기 CASE 미만의 입력을 포함하는 제안 ... WHEN 블록. 여기에서, 같은 하위 문자열을 추출하여 수행됩니다 :

    select substr('SunMonTueWedThuFriSat', 1 + 3*strftime('%w', timestr), 3) as dow
    from ...
    

    그것은 단지지만, 대신 전체 요일 이름의 길이 약어를 고정 생산하고 있습니다. (하지만 가끔은 그의 충분.)

  3. ==============================

    3.

    SELECT _id, busnum, date_format(servdate, '%a') as servdayofweek
    FROM tb1
    WHERE servdate BETWEEN date('now', 'Weekday 1', '-21 days') AND date('now')
    

    이 % A는 주 단축 날입니다. 형식으로 다른 방법에 대한 설명서를 참조하십시오.

    편집하다:

    아차! SQLite는 태그를 간과. 위의 MySQL을위한 것입니다. SQLite는 (문서)의 경우 :

    SELECT _id, busnum, strftime('%w', servdate) as servdayofweek
    FROM tb1
    WHERE servdate BETWEEN date('now', 'Weekday 1', '-21 days') AND date('now')
    

    6.을 통해 값을 0으로이 반환을 요일을 제외시켰다 어쩌면 좋은만큼이야?

  4. from https://stackoverflow.com/questions/4319302/format-date-as-day-of-week by cc-by-sa and MIT license