본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

날짜와 타임스탬프

1. 날짜 추가 또는 빼기

날짜에 일자 추가 또는 빼기

  • F.date_add(시작, 일)
  • F.date_sub(시작, 일)

날짜에 월 추가

  • F.add_months(시작, 월)

두 날짜 사이의 일수 또는 월 수 얻기

  • F.datediff(끝, 시작)
  • F.months_between(날짜1, 날짜2)

월의 마지막 날 얻기

  • F.last_day(날짜)

다음 요일의 날짜 얻기

  • F.next_day(날짜, 요일)

2. 날짜 값

연, 월, 일, 분, 초 얻기

  • F.year(열)
  • F.month(열)
  • F.dayofmonth(열)
  • F.hour(열)
  • F.minute(열)
  • F.second(열)

날짜로부터 사업 분기 얻기

  • F.quarter(열)

날짜로부터 년의 일 또는 주 얻기

  • F.dayofyear(열)
  • F.weekofyear(열)

3. 형식화

날짜 및 시간 형식 문법

빠른 참조를 위해 아래를 확인하세요:

형식예시
yyyy-MM-dd1997-01-31
yyyy-MM-dd HH:mm1997-01-31 23:59:59

날짜 형식화 문자열 패턴은 Java class java.text.SimpleDateFormat에 기반합니다. 완전한 출처는 날짜 & 시간 형식 문법 표에서 확인 가능합니다.

문자열에서 변환

  • F.to_date(열, 형식=None)
  • F.to_timestamp(열, 형식=None)
  • F.to_utc_timestamp(타임스탬프, tz)
  • F.unix_timestamp(타임스탬프=None, 형식='yyyy-MM-dd HH:mm:ss')

문자열로 변환

  • F.date_format(날짜, 형식)
  • F.from_unixtime(타임스탬프, 형식='yyyy-MM-dd HH:mm:ss')
  • F.from_utc_timestamp(타임스탬프, tz)

long에서 timestamp로 캐스팅

일부 시스템은 타임스탬프를 long 데이터 유형으로, 밀리초 단위로 저장합니다. PySpark SQL은 타임스탬프를 초 단위로 저장합니다. long 버젼의 타임스탬프를 적절하게 timestamp로 캐스팅하기 위해 1000으로 나누어야 합니다:

Copied!
1 2 3 4 5 # 타임스탬프를 1000으로 나누고, "timestamp" 형식으로 변환 casted_timestamp = (F.col('timestamp') / 1000).cast("timestamp") # 변환된 타임스탬프를 데이터 프레임에 적용 df = df.withColumn("timestamp", casted_timestamp) # 예시: 1531860192661 => Tuesday, July 17, 2018 8:43:12 PM (2018년 7월 17일 화요일 오후 8시 43분 12초)

우리는 또한 F.from_unixtime(timestamp)를 명확성을 위해 사용할 수 있습니다:

Copied!
1 2 3 4 # 유닉스 시간을 사용하여 타임스탬프를 생성합니다. timestamp = F.from_unixtime(F.col('timestamp') / 1000) # 데이터프레임에 새로운 타임스탬프 컬럼을 추가합니다. df = df.withColumn("timestamp", timestamp)

long에서 timestamp로 캐스팅할 때, 세밀함을 잃습니다. SQL은 초의 퍼센트나 소수를 저장할 수 없습니다.

절삭하기

  • F.trunc(날짜, 형식)
  • F.date_trunc(형식, 타임스탬프)