在SQL Server存储过程中格式化日期的最佳方法

本文关键字:日期 最佳 方法 格式化 过程中 SQL Server 存储 存储过程 | 更新日期: 2023-09-27 18:07:44

这是我使用date类型的SQL Server的示例数据

TglUnggah = 30/03/2014

我需要日期格式'日/月/年'

存储过程

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的最佳方法是什么?

在SQL Server存储过程中格式化日期的最佳方法

以上皆非。尽可能使用DateTime。只有在需要向用户显示输出时才转换为格式化字符串。此时,您应该使用适合该用户区域性的任何格式。

DateTime的优点是易于进行操作,并且您不必担心在任何地方转换格式。DateTime实际上是对特定日期之后的刻度数的包装(您不需要知道这一点),因此没有DateTime对象的固有字符串表示(您确实需要知道这一点)。

在c#中可以使用DateTime。TryParseExact

在SQl server中可以使用Cast和Convert

您可以使用以下程序:

       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";
               }
           }
       }

还有一件事需要考虑。当全球化时,您可能需要处理不同的时区,因此您可能希望使用日期时间偏移来存储日期,从而允许您存储UTC时间。

这个解决方案是谁想要在整个应用程序中以'dd/mm/yyyy'显示日期,而不使用与时区相关的。否则,您需要转换/强制转换要显示的数据。

这个问题最好的解决办法是:-写在之前到日期的操作完成

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

它只是转换你的日期时间格式,你需要

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

http://forums.asp.net/t/1740263.aspx?SET + DATEFORMAT + dmy +选择+ + Table1 +中+类型+ ee +订单+ + +日期+是+ datetime + desc