【问题标题】:Microsoft SQL Server 2008 - DatesMicrosoft SQL Server 2008 - 日期
【发布时间】:2011-08-10 05:02:56
【问题描述】:

关于 SQL Server 中的日期,我有几个问题。

  1. 如何将 datetime 值“2011-08-10 14:56:17.267”分隔为两个单独列中的日期和时间戳。例如。日期“2011-08-10”和时间戳“14:56:17”

  2. 我想将时间戳从 datetime 值中删除为“2011-08-10”,并且仍然能够按日期对数据进行排序(因此未转换为 varchar)。也可以将日期值更改为“2011 年 8 月 10 日”并且仍然可以排序(不是按字母顺序,而是按实际日期顺序)。

谢谢, HL

【问题讨论】:

  • 这两个问题大概应该分开贴吧。

标签: sql sql-server sql-server-2008 datetime


【解决方案1】:

对于第一个:

UPDATE atable
SET
  DateColumn = CAST(DateTimeColumn AS date),
  TimeColumn = CAST(DateTimeColumn AS time)

至于第二种,日期显示格式是与日期无关的东西。您可以按日期列对结果集进行排序,但在 SELECT 子句中,您可以使用 CONVERT 以所需格式显示日期。例如:

SELECT
  CONVERT(varchar, DateColumn, 106) AS Date,
  …
FROM atable
ORDER BY DateColumn

【讨论】:

    【解决方案2】:

    使用来自资源http://www.mssqltips.com/tip.asp?tip=1145的参数的CONVERT函数

    -- simple conversion example:
    SELECT CONVERT(VARCHAR(10), GETDATE(), 102) -- for date
    SELECT CONVERT(VARCHAR(10), GETDATE(), 8)  -- for time
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2013-10-31
      相关资源
      最近更新 更多