Форум программистов, компьютерный форум, киберфорум
Ruby on Rails
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
1

Формат сохранения даты в БД

13.02.2016, 10:38. Показов 2975. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
У меня есть данные, в них есть поле Дата. В формате "2016-02-13T05:45:29Z". Можно ли в Ruby как-то этот формат представить в виде типа Time?
Чтобы потом сохранить в поле БД с типом DateTime?
Спасибо.

Добавлено через 1 час 48 минут
Все, разобрался.
Другой вопрос: Теперь у меня в БД хранится дата "2016-02-13 6:00:23". Мне нужно при сохранении новой модели Poster проверять время. Если в час новой модели уже присутствует в БД, то не сохранять.
Т.е. если в базе уже есть запись с "2016-02-13 6:00:23" то при создании новой модели с датой"2016-02-13 6:55:23" не сохранять ее т.к. в шестом часу уже создана запись?
Подскажите как это реализовать.
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2016, 10:38
Ответы с готовыми решениями:

Вместо даты выводит формат даты
Добрый день всем.Помогите решить проблему.Есть программа, которая формирует некоторый документ в...

Формат сохранения изображения
Имеется код, нужно чтобы он сохранял изображения в формате (имя.время выполнения программы) Как...

формат сохранения сообщений
вот например сообщения типа на форуме - есть и 10 знаков а есть и 1000 как правильно в базе...

Формат сохранения базы данных
Всем привет! Как сохранить файл БД в формате .mdb? Мои попытки не увенчались успехом. Вот что...

9
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
13.02.2016, 12:14 2
можно использовать before_save.
И что то вроде
Ruby
1
if record.updated_at < 1.hour.ago
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
13.02.2016, 12:20  [ТС] 3
А если сейчас 9 часов, а последняя была в 2 часа, то ваше условие не даст записать данные с updated_at 6 часов...
Может циклом каждое updated_at побежать и доставать час и дату (без минут) и сравнивать с значением, которое хотим сохранить.
Костыль получится?
0
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
13.02.2016, 12:24 4
условие я как пример написал, там уже сами под свою нужду допишите. Я же не знаю как именно должно это работать. Можете достать последнюю запись отсортированную по updated_at... В общем нужно чуток подумать
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
13.02.2016, 12:28  [ТС] 5
А можно регуляркой проверить, есть ли такая дата с таким часом в каком-либо поле updated_at?
0
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
13.02.2016, 12:31 6
Костяныч, я не совсем догнал что нужно вам. Есть таблица куда сохраняются, грубо говоря, посты. Вы хотите что бы эти посты сохранялись не чаще чем раз в час. Так?
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
13.02.2016, 12:35  [ТС] 7
Давран, если я пытаюсь сохранить запись в определенный час, а в БД уже есть запись в этот час (не важно какая минута), то отвергаем. Мне надо проверять...
Пример:записываю с данными 7:55, а в бд уже есть запись в 7:01, то отвергаю запись т.к. в седьмом часу уже есть запись.
0
203 / 152 / 44
Регистрация: 24.11.2013
Сообщений: 1,106
13.02.2016, 13:01 8
Костяныч, а если так
Ruby
1
if @record.updated_at.strftime("%Y-%m-%e %I") != Time.now.strftime("%Y-%m-%e %I")
Добавлено через 1 минуту
В контроллере должно быть так
Ruby
1
@record = Model.last
Если при правильной работе, посты будут с интервалом в час, следовательно проверка последней будет достаточна
1
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
13.02.2016, 13:51 9
Регулярки, сравнение строк. Представляете как долго это будет работать? Сравнивайте дату:
Rails
1
2
3
4
5
6
7
8
9
10
11
12
13
class Post < ActiveRecord::Base
  validate :only_one_post_at_hour
  
  # я думаю, мысль вам ясна?
  private def only_one_post_at_hour
    # подставьте условие какое вам нужно
    # допустим у вас в модели есть некое поле post_date:datetime в котором
    # сохраняется время создания записи(не :timestamps)
    time_range = post_date.beginning_of_hour..post_date.end_of_hour
    return unless Post.exists?(post_date: time_range)
    errors.add(:base, 'Record with that date already exist!')
  end
end
Добавлено через 5 минут
edit
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,240
Записей в блоге: 2
15.02.2016, 06:45  [ТС] 10
Давран, хороший способ. Дата представлена в таком виде "2016-02-15T03:33:18Z". Если я делаю
Ruby
1
2
d = Date.strptime('2016-02-15T03:33:18Z')
puts d.strftime("%Y-%m-%e %I") #=> 2016-02-15 12
то получаю 2016-02-15 12. Откуда эти 12 берутся?

Добавлено через 6 минут
Вот так делаю:
Ruby
1
2
3
4
5
require 'date'
 
puts d = Date.parse('2016-02-15 15:23:00')
puts k = Date.strptime('2016-02-15T03:33:18Z')
puts d.strftime("%Y-%m-%e %H")
все равно выводит 20016-02-15 00....

Добавлено через 2 минуты
Разобрался, вот так работает:
Ruby
1
2
k = Time.parse('2016-02-15T03:33:18Z')
puts k.strftime("%Y-%m-%e %H")
0
15.02.2016, 06:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2016, 06:45
Помогаю со студенческими работами здесь

Ограничить формат сохранения файла Excel
Добрый день. Я совершенный «нуб» в VBA. Есть файл .xlsm, который имеет ограниченный доступ...

Код для сохранения картинки в GIF формат.
Помогите написать на VB код, который сохранял бы картинку в файл GIF.Заранее благодарен.

Установка даты в PreparedStatement для сохранения в БД PostgreSQL
Здравствуйте!) В базу записывается год, месяц день - часы, минуты, секунды равны нулю. Возможно...

Формат даты
Всем привет! Помогите пожалуйста, как поменять отображение формата даты yyyy/mm/dd в таблице? Не в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru