Проблема с датой

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
masters
новенький
Сообщения: 20
Зарегистрирован: 19.08.2009 13:50:59

Проблема с датой

Сообщение masters »

Есть программа, работает с БД MySQL. При добавлении строки в базу дописывается и дата добавления (в базе хранится как текст).

DateToStr(now)
Вобщем при работы с винды все нормально, дата добавляется в виде: 08.10.2009
А при работе с Линукса (Ubuntu 9.04) дата добавляется в виде: 8-10-09

Планируется работа с базой пользователей обоих ОС, поэтому возможны затруднения. Конечно можно парсить дату при добавлении и приводить к единому виду, но может есть способ проще ???

В Убунте не нашел, как задавать вид даты в системе :(
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Код: Выделить всё

var
  d: String;
begin
  DateTimeToString(d,'dd.mm.yyyy',Now)


Добавлено спустя 21 минуту 6 секунд:
Или можно проще. в коде задайте значение переменной

Код: Выделить всё

ShortDateFormat:='dd.mm.yyyy'
Аватара пользователя
Light13
постоялец
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Сообщение Light13 »

masters писал(а):в базе хранится как текст

имхо не верный подход - лучше завести поле типа Дата и меньше будет проблем
masters
новенький
Сообщения: 20
Зарегистрирован: 19.08.2009 13:50:59

Сообщение masters »

Light13 писал(а):
masters писал(а):в базе хранится как текст

имхо не верный подход - лучше завести поле типа Дата и меньше будет проблем


В программе не используются компоненты длы работы с БД, поэтому с базы все считывается как string.
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

masters писал(а):поэтому с базы все считывается как string.

не важно. зато не будешь наступать на грабли и меньше проблем с выборками по условиям. а по датам скорость выборки.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

А почему бы не генерировать дату средствами MySQL? Функция now().
Petrakoff Sergey
новенький
Сообщения: 33
Зарегистрирован: 08.12.2011 11:42:17

Сообщение Petrakoff Sergey »

Сделал как советует Mr.Smart:
Mr.Smart писал(а):Или можно проще. в коде задайте значение переменной

Код: Выделить всё

ShortDateFormat:='dd.mm.yyyy'

Даты отображаются нормально, но теперь не могу ввести дату. Делаю так:

Код: Выделить всё

var
  tempdate: TDateTime;
begin
......
try
    tempdate:= StrToDate(DBEdit1.Text);
  except
      DBEdit1.Text:= CurrentDate;
      ShowMessage('Неверный формат даты');
      exit;
  end;     

DBEdit1 связан с полем типа Date.
Как бы я не вводил дату, выдается ошибка.

Код: Выделить всё

'11.03.2012' is not a valid date format

Пробовал и так 'dd/mm/yyyy' , ничего не получается.
Как теперь вводить дату?
PS. Забыл сообщить. В Windows без проблем. Проблема в Linux (Mandriva 2009).

Нашел решение! Надо добавить:

Код: Выделить всё

ShortDateFormat:='dd.mm.yyyy';
DateSeparator:= '.';
Ответить