사실 날짜 유형의 열이있는 표가 있지만 그 해만 사용합니다. 얼마나 일년을 유지하기 위해 그것을 정수형으로 변경합니까? 3 단계 마이그레이션이 필요합니까? 그리고 어떻게 롤백을합니까?Rails 마이그레이션 : 열 데이터 유형을 날짜에서 정수로 변경하십시오.
답변
나는 다른 포스터에 동의 : 즉 진정으로 캡처 할 정보 인 경우 정수로 해 저장하는 것이 더 낫다. 당신이하지 않으면 전체 날짜를 저장하기 때문에 실제로 정보가 잘못 표시되는 것을 저장하고 있기 때문입니다. 즉, 하루와 달 및 일부 캘린더 메타 데이터를 저장할 수 있습니다. 이것을 사용할 때마다 이것을 명심해야하며 계산이 실제로하고 싶은 것을 확실히해야합니다. 즉, Rails와 Ruby에서 사용되는 많은 날짜 및 시간 클래스와 라이브러리가 모두 사용되고 있습니다.
연도가 필요하고 원하는 경우 1 년 만 저장하십시오. 이를 달성하기 위해 간단하고 보수적 인 방법을 사용합니다. 몇 가지 간단한 마이그레이션을 수행하십시오.
- 새해의 열을 추가하십시오.
- 데이터를 변환하십시오.
- 이전 연도 열을 삭제하십시오.
저는 다른 포스터에 동의합니다. 날짜 값으로 유지하고 연도 만 표시하는 것이 좋습니다. 계산 목적으로, 그 열의 모든 날짜 값을 01-01-YYYY로 설정할 수 있습니다. 그런 다음,보기에 그 해를 표시 할 때 수행
#- my_date_value=Wed, 18 Sep 2013 19:21:11 UTC +00:00
my_date_value.year
=> 2013
즉
<%= my_date_value.year %>
을하지만,이 날짜 값을 결정하는 경우에, 당신은 등 마이그레이션을 수행 할 수 있습니다 년 전용 정수 필드로 변환하려면 다음
class ChangeThingDateToYear < ActiveRecord::Migration
def change
add_column :things, :my_year_value, :integer
# You need to tell ActiveRecord to refresh the object
MyDatedThings.reset_column_information
MyDatedThings.all.each do |r|
r.my_year_value = r.my_date_value.year
r.save!
end
remove_column :things, :my_date_value
# If you want to keep the same column name
rename_column :things, :my_year_value, :my_date_value
end
end
의견을 제시해 주셔서 감사 드리며 마이그레이션 코드를 보내 주셔서 감사합니다. 굉장히 유용하다! 저는 실제로 날짜 유형을 사용하고 있으며 여러분이 말한 것처럼 올해 부분과 만 작업하기 때문에 지금 다른 방법을 시도 할 것입니다. 감사. – hector
- 1. neo4j 데이터베이스의 데이터 유형을 변경하십시오.
- 2. rails 데이터베이스에서 열 이름을 변경하십시오.
- 3. Rails ActiveRecord Migration의 rename_column은 이전 열 데이터 유형을 보존합니까?
- 4. Rails 마이그레이션에서 데이터 마이그레이션
- 5. Rails 마이그레이션 및 열 변경
- 6. mutate_at를 사용하여 여러 열 유형을 변경하십시오.
- 7. Rails/MySql 마이그레이션 마이그레이션
- 8. 연속 열의 데이터 유형을 변경하십시오.
- 9. JSON 필드의 데이터 유형을 변경하십시오.
- 10. 데이터베이스 관련 데이터 유형을 사용하는 레일스 마이그레이션
- 11. 목록의 열 유형을 Sharepoint의 조회에서 변경하십시오.
- 12. 필드 유형을 Int에서 Float로 변경하십시오.
- 13. Rails 마이그레이션에서 사용자 정의 열 유형을 사용할 수 있습니까?
- 14. 데이터 프레임의 열 이름을 변경하십시오.
- 15. CITEXT 데이터 유형을 처리하는 PostgreSql을 Oracle로 마이그레이션
- 16. 문자열을 파이썬/팬더의 정수로 변경하십시오.
- 17. 둘 이상의 테이블에있는 열 데이터 형식을 변경하십시오.
- 18. 안전하게 SQL Azure에서 열 데이터 형식을 변경하십시오.
- 19. 앱 업데이트로 NSUserDefault에 저장된 데이터 유형을 변경하십시오.
- 20. 십진수를 사용하여 DataTable의 데이터 유형을 변경하십시오.
- 21. 플롯 차트 : 축 데이터 유형을 시간으로 변경하십시오.
- 22. bigint에서 열의 데이터 유형을 uniqueidentifier로 변경하십시오.
- 23. 날짜에서 데이터 추출
- 24. Sequelize : 열 유형을 ENUM
- 25. (Rails) 필드의 데이터 유형을 확인하는 방법이 있습니까?
- 26. Rails 모델에서 속성의 데이터 유형을 얻으려면 어떻게해야합니까?
- 27. 열 유형을 ntext에서 varbinary (최대)
- 28. 거대한 테이블의 열 형식을 변경하십시오.
- 29. 도메인 변경 유형을 변경하십시오.
- 30. self.view의 클래스 유형을 변경하십시오.
날짜는 그대로두고 연도 만 표시하십시오. 몇 달 또는 며칠을 입력하는 것을 원하지 않으면 1 월 1 일을 사용하십시오. –
나는 @RobertHarvey에 동의한다. 나는 아직도 그 날짜의 "년"을 의미하는 한 그것을 남겨 두었다. 정수를 원한다면 한 번에 모든 작업을 수행 할 수 있지만 롤백을 사용하면 버려지는 월 및 일 정보를 직접 복구 할 수 없습니다. – lurker