Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > и снова формат времени


Автор: 4ybaka 29.12.2007, 16:36
сразу не ругайте,нашел много тем по этому вопросу,но везде обсуждалась другая его сторона.
у меня была БД sql2005.там в таблице был столбец типа DateTime.после того,как кинул эту БД на другой сервер,он стал выводить время в забугорном формате - Am/Pm.(сервер наш smile )
подскажите,как это исправить?

Автор: SergKO 30.12.2007, 10:54
Установите требуемый формат даты/времени на самом сервере.

Автор: 4ybaka 30.12.2007, 11:41
Цитата(SergKO @  30.12.2007,  10:54 Найти цитируемый пост)
Установите требуемый формат даты/времени на самом сервере.

под "сервер наш" я имел ввиду что он где-то в россии стоит smile а так менять там настройки сервера мне никто естественно не даст.разве что если это можно нстроить отдельно для БД?..

Автор: Servena 30.12.2007, 11:45
Цитата

он стал выводить время в забугорном формате - Am/Pm


Там пользуються Менеджмент Студио? 
Я думаю это ошибка программы которая работает с сервером. 
Приведи код, как оно выводится.

Автор: 4ybaka 30.12.2007, 23:01
12/29/2007 12:18:48 AM

про Менеджмент Студио ничего не нашел.сайт лежит на http://iis7.parking.ru/default.aspx

Автор: Servena 30.12.2007, 23:35
ОК, покажи код, как вы выводите время в ДОД.НЕТе?

Автор: 4ybaka 31.12.2007, 02:36
Код

tc = new TableCell();
tc.Text = "Дата: " + table.Rows[i]["MsgDate"].ToString();

Автор: SergKO 31.12.2007, 06:25
Цитата(SergKO @  30.12.2007,  10:54 Найти цитируемый пост)
Установите требуемый формат даты/времени на самом сервере. 

М-да, пардон, глупость ляпнул (рву на себе волосы, посыпаю голову пеплом ). Формат даты зависит от установок клиентского компьютера и, естесственно, клиентского приложения. Т.е. 
Servena абсолютно прав, что стал разбираться с кодом. Видно, что дата/время используют формат по учолчанию и не форматируются явно.

Автор: 4ybaka 31.12.2007, 11:29
а как тогда его явно изменить?и мне не совсем тогда понятно,что представляет собой в данном случае клиентское приложение?ведь я сначала запускал сайт на своем компе,а потом с удаленного сервера.сервер разный,а вот клиент(кроме браузера то вроде у клиента нет ничего...)одинаковый...

Автор: Servena 31.12.2007, 12:23
Время у тебя выводит программа на ДОД.НЕТе, она берет региональные(национальные) настройки с настроек операционной стреды (в нашем случае - сервера). А браузер только показывает, что ему передали.

Подожди, у меня сейчас появится свободная минутка, я покажу как менять региональные стандарты явно.

Автор: Servena 1.1.2008, 20:40
Вобщем, вот, может поможет:
Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Globalization;

namespace Datetime
{
    class Program
    {       
        static CultureInfo UkrainianCultureInfo = new CultureInfo("uk-UA");       
        public static DateTime dtUkrainian = DateTime.Parse("2007/12/10 5:59 Pm", UkrainianCultureInfo);        
        static void Main(string[] args)
        {
            Console.WriteLine(dtUkrainian.ToString());          
            Console.ReadLine();
        }
    }
}


Выведет: 12.10.2007 17:59:00ю

Добавлено через 1 минуту и 20 секунд
Без "ю" в конце  smile 

Автор: 4ybaka 2.1.2008, 02:14
сделал так
Код

        CultureInfo cinfo = new CultureInfo("uk-UA");//хотя и ru-RU тоже пытался :)
        string temp = table.Rows[i]["MsgDate"].ToString();
         tc.Text = "Дата: " + DateTime.Parse(temp,cinfo).ToString();


так теперь говорит: "String was not recognized as a valid DateTime." хотя если дома так сделать(там выводит в нужном формате) то он не ругаетя. в БД даты одинаковые... smile 

Автор: SergKO 2.1.2008, 06:29
А если просто отформатировать?
Код

            string dateTimeFormat = "dd.MM.yyyy  HH :mm";
            DateTime dt = new DateTime(2007,8,2,0,0,0);
            MessageBox.Show(dt.ToString() + "\n" + dt.ToString(dateTimeFormat));

Автор: Servena 2.1.2008, 10:23
Если то не получится, попробуй еще "поганять" 
Код

string ToString (IFormatProvider provider)

где интерфейс IFormatProvider реализован в классе  DateTimeFormatInfo.

Автор: 4ybaka 2.1.2008, 11:15
через DateTimeFormatInfo что-то не получилось.но если честно,то я и не долго пытался...попробовал как предложил SergKO, и заработало smile всем спасибо.

Автор: rni 23.4.2008, 09:03
В самом T-SQL можно конвертуть дату в нужном формате  в  тип Varchar ?  В Oracle было проще TO_CHAR(dt,'yyyy/mm/dd')...

Автор: rni 23.4.2008, 09:25
Вопрос снят  

Нашел конкретно для себя, млин...

select REPLACE(REPLACE(convert (varchar, GETDATE(),120),'-','/'),' ','-')

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)