Microsoft SQL Server 2008 - 日期

时间:2011-08-10 05:02:57

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

关于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日”,并且仍然可以排序(不按字母顺序排序,但按实际日期顺序排序)。

  3. 谢谢你, HL

2 个答案:

答案 0 :(得分:6)

第一个:

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

答案 1 :(得分:0)

将CONVERT函数与资源http://www.mssqltips.com/tip.asp?tip=1145

中的参数一起使用
-- simple conversion example:
SELECT CONVERT(VARCHAR(10), GETDATE(), 102) -- for date
SELECT CONVERT(VARCHAR(10), GETDATE(), 8)  -- for time