【问题标题】:How do I change the format of my date in SQL Server如何在 SQL Server 中更改日期格式
【发布时间】:2014-04-28 18:43:40
【问题描述】:

我使用的是 SQL Server 2008 R2,我的表中有一个名为 StartDate 的字段,如下所示,

1977-10-17 00:00:00.000

如何更改这些值以表示 10-17-1977?此外,如果日期是 1900-01-01 00:00:00.000 我想将其更改为空值。这些类型的更改是否有命令或存储过程?

谢谢 尼克

【问题讨论】:

  • StartDate 列是什么数据类型?
  • 1.转换功能。 2.案例。

标签: sql-server stored-procedures sql-server-2008-r2


【解决方案1】:

试试

declare @date varchar(10)
set @date = CONVERT(varchar(10),@startdate,110)

【讨论】:

  • 101 以mm/dd/yyyy 格式返回日期 OP 希望它采用mm-dd-yyyy 格式,您的解决方案也不处理sql server 默认日期大小写。
【解决方案2】:

您可能希望使用convert 来获取您所追求的格式,如:

select convert(varchar(10), MyColumn, 110) from MyTable;

在这里,我们将您的日期时间转换为字符值,但具有特定的日期样式(样式 110)。

可以使用case 开关或nullif 函数对您的空问题进行排序:

select nullif(MyColumn, '19000101') from MyTable;
select case when MyColumn = '19000101' then null else MyColumn end from MyTable;

请注意,我假设 MyColumn 存储为日期时间或类似数据类型。如果没有,那么您可以根据上述文档cast 他们。

随意组合功能,如:

select convert(varchar(10), nullif(MyColumn, '19000101'), 110) from MyTable;

【讨论】:

    【解决方案3】:
    SELECT CASE WHEN  StartDate = '1900-01-01 00:00:00.000' THEN NULL
             ELSE CONVERT(VARCHAR(10), StartDate , 110)
           END AS StartDate 
    
    FROM Table_Name
    

    【讨论】:

      【解决方案4】:

      如果您希望以请求的日期格式显示时间,请尝试:

      SELECT CONVERT(VARCHAR(10), GETDATE(), 110) + substring(CONVERT(VARCHAR(23), GETDATE(), 121),12,12)
      

      对于使用 CONVERT 命令的不同日期格式的比较列表,请使用 http://rossql.blogspot.com/2014/04/sql-format-of-date-and-time-way-i-like.html 处的代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多