module Dateslices::Mysql

Public Class Methods

time_filter(column, field) click to toggle source
# File lib/dateslices/mysql.rb, line 4
def self.time_filter(column, field)
  case field
    when :hour_of_day
      "(EXTRACT(HOUR from #{column}))"
    when :day_of_week
      "(DAYOFWEEK(#{column}) - 1)"
    when :day_of_month
      "DAYOFMONTH(#{column})"
    when :month_of_year
      "MONTH(#{column})"
    when :second
      "DATE_FORMAT(#{column}, '%Y-%m-%d %H:%i:%S UTC')"
    when :minute
      "DATE_FORMAT(#{column}, '%Y-%m-%d %H:%i:00 UTC')"
    when :hour
      "DATE_FORMAT(#{column}, '%Y-%m-%d %H:00:00 UTC')"
    when :day
      "DATE_FORMAT(#{column}, '%Y-%m-%d 00:00:00 UTC')"
    when :month
      "DATE_FORMAT(#{column}, '%Y-%m-01 00:00:00 UTC')"
    when :year
      "DATE_FORMAT(#{column}, '%Y-01-01 00:00:00 UTC')"
    when :week # Sigh...
      "DATE_FORMAT( date_sub( created_at, interval ((weekday( created_at ) + 1)%7) day ), '%Y-%m-%d 00:00:00 UTC')"
    else
      throw "Unknown time filter #{field}"
  end
end