这是使用带有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
且无法更新
在SQL Server /存储过程/ ASP.NET中使用格式dd/MM/yyyy
的最佳方法是什么?
答案 0 :(得分:1)
以上都不是。尽可能使用DateTime。只有在需要向用户显示输出时才转换为格式化字符串。此时,您应该使用适合该用户文化的任何格式。
DateTime的优点是可以轻松进行操作,而且您不必担心在任何地方转换格式。 DateTime实际上是一个自特定日期以来的滴答数量的包装器(您不需要知道),因此没有DateTime对象的固有字符串表示(您需要知道这一点)。
答案 1 :(得分:0)
在C#中,您可以使用DateTime.TryParseExact
在SQl服务器中,您可以使用Cast and Convert
答案 2 :(得分: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";
}
}
}
答案 3 :(得分:0)
要解决此问题的最佳方法是: - 在完成之前的操作中写完
Set Dateformat DMY
了解dateformat的基本规则: -
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
只需根据需要转换日期时间格式
答案 4 :(得分:0)
另外要考虑的事情。全球化时,您可能需要处理不同的时区,因此您可能希望存储日期时间偏移量的日期,以便存储UTC时间。