Это мои данные примера с использованием 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?
Ни один из вышеперечисленных. Используйте DateTime, когда это возможно. Преобразуйте только в форматированную строку, когда вам нужно отобразить вывод пользователю. В этот момент вы должны использовать любой формат, подходящий для этой пользовательской культуры.
Преимущество DateTime заключается в том, что с ней легко справляться, и вам не нужно беспокоиться о конвертировании форматов во всем мире. DateTime на самом деле является оберткой вокруг количества тиков с определенной даты (вам не нужно это знать), поэтому нет строкового представления объекта DateTime (вам нужно это знать).
Еще одна вещь, которую следует учитывать. При глобализации вам, возможно, придется иметь дело с разными часовыми поясами, поэтому вы можете захотеть сохранить даты со смещением по дате, что позволяет хранить время UTC.
Лучше всего решить эту проблему: - написано в предыдущей операции
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
Он просто преобразует ваш формат даты и времени, как вам нужно.
Вы можете использовать эту процедуру:
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";
}
}
}
в С# вы можете использовать DateTime.TryParseExact
на сервере SQl вы можете использовать Cast и Convert