Лучший способ отформатировать дату в хранимой процедуре SQL Server

1

Это мои данные примера с использованием SQL Server с типом date

TglUnggah = 30/03/2014

Мне нужен формат даты 'dd/MM/yyyy'

Моя хранимая процедура

ALTER proc [dbo].[SP_ViewFile] 
AS 
BEGIN   
   SELECT        
      IdFile, IdAkses, NamaFile, Count, 
      CONVERT(VARCHAR(10), TglUnggah, 103) AS TglUnggah, 
      Keterangan, Role, Url     
   FROM            
      tbFile 
END

При запуске этой хранимой процедуры в ASP.NET данные 30/03/2014, но в подробном виде формат изменяется до 30/03/2014 0:00:00 и не может быть обновлен

Каков наилучший способ использования формата dd/MM/yyyy в SQL Server/хранимой процедуре /ASP.NET?

Теги:
sql-server

5 ответов

1

Ни один из вышеперечисленных. Используйте DateTime, когда это возможно. Преобразуйте только в форматированную строку, когда вам нужно отобразить вывод пользователю. В этот момент вы должны использовать любой формат, подходящий для этой пользовательской культуры.

Преимущество DateTime заключается в том, что с ней легко справляться, и вам не нужно беспокоиться о конвертировании форматов во всем мире. DateTime на самом деле является оберткой вокруг количества тиков с определенной даты (вам не нужно это знать), поэтому нет строкового представления объекта DateTime (вам нужно это знать).

  • 0
    ОП уже имеет тип даты. Он хочет только отформатировать это.
  • 0
    @Ehsan Вопрос, кажется, о том, как отформатировать дату для использования в разных местах, и это то, что я ответил. Если это не так, ОП вполне способен прояснить себя.
0

Еще одна вещь, которую следует учитывать. При глобализации вам, возможно, придется иметь дело с разными часовыми поясами, поэтому вы можете захотеть сохранить даты со смещением по дате, что позволяет хранить время UTC.

0

Лучше всего решить эту проблему: - написано в предыдущей операции

Set Dateformat DMY 

Основное правило для получения информации о формате даты:

http://blog.sqlauthority.com/2007/09/28/sql-server-introduction-and-example-for-dateformat-command/

подобно

CREATE PROCEDURE SPNAME
(
     parameter...
)
as

BEGIN
SET DATEFORMAT DMY

OTHER STATEMENT
END

Вы можете проверить как

Set Dateformat dmy

Declare @date datetime = '10-06-2012'

select @date

Он просто преобразует ваш формат даты и времени, как вам нужно.

http://msdn.microsoft.com/en-IN/library/ms189491.aspx

http://forums.asp.net/t/1740263.aspx?SET+DATEFORMAT+dmy+SELECT+FROM+Table1+WHERE+Type+ee+order+by+cast+Date+as+datetime+desc

0

Вы можете использовать эту процедуру:

       public static string ConvertDtFormat(string dateTimeString)
       {
           dateTimeString = dateTimeString.Trim();
           while (dateTimeString.Contains("  "))
           {
               dateTimeString = dateTimeString.Replace("  ", " ");
           }

           if (dateTimeString == null || dateTimeString.Length == 0)
           {
               return string.Empty;
           }
           else
           {
               DateTime convertedDateTime = new DateTime();
               string userDateFormat = HMS.DEFAULT_DATE_FORMAT;

               try
               {
                   if (userDateFormat.Trim().Contains("dd/MM/yyyy"))
                       convertedDateTime = DateTime.ParseExact(dateTimeString, format_dmy, CultureInfo.InvariantCulture,
                                                               DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite);
                   else if (userDateFormat.Trim().Contains("MM/dd/yyyy"))
                       convertedDateTime = DateTime.ParseExact(dateTimeString, format_mdy, CultureInfo.InvariantCulture,
                                                               DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite);

                   return convertedDateTime.ToString("MMM dd, yyyy hh:mm tt");
               }
               catch
               {
                   return "Invalid DateTime";
               }
           }
       }
0

в С# вы можете использовать DateTime.TryParseExact

на сервере SQl вы можете использовать Cast и Convert

Ещё вопросы

Сообщество Overcoder
Наверх
Меню