Cast函数仅显示日期时间的月份和日期

时间:2015-02-08 02:57:06

标签: sql sql-server tsql datetime

SELECT 
    DateAdded, 
    Cast(DateAdded AS Date) AS DateAddedV1, 
    Cast(DateAdded AS Time) AS DateTime, 
    SELECT CAST(DateAdded AS Date(mm:dd) AS OrderDate
FROM Products

我是SQL的初学者,我试图将DateAdded列作为OrderDate返回,只有月份和日期,但我似乎无法正确使用语法。我感谢任何人的帮助。

4 个答案:

答案 0 :(得分:3)

使用DatePart功能从day类型中提取monthDatetime

Select Datepart(Month,DateAdded) AS [Month], -- Month(Dateadded)
       Datepart(Day,DateAdded) as [Day], -- Day(Dateadded)
       ..
From   Products

更新:仅使用cast功能,您无法提取MonthDay。如果您想将月份和日期保持在同一列中

    SELECT CONVERT(VARCHAR(2), Month(DateAdded)) + ':'
           + CONVERT(VARCHAR(2), Day(DateAdded)) 
           .....

要获得领先的零使用right函数并从DateAdded中提取Time,请使用Convert108函数

SELECT right('0'+CONVERT(VARCHAR(2), Month(DateAdded)),2) + ':'
       + right('0'+CONVERT(VARCHAR(2), Day(DateAdded)) ,2) as [Mon:Day],
         convert(varchar(10),DateAdded,108) as [Time]
       .........

答案 1 :(得分:2)

我想我本学期正在完成这项任务。这是我最终得到的结果,因为它必须使用CAST函数完成:

SELECT DateAdded,
    CAST(DateAdded AS date) AS DateOnly,
    CAST(DateAdded AS time) AS TimeOnly,
    CAST(DateAdded AS varchar(6)) MonthDay
FROM Products;

这是有效的,因为varchar总是在前6个字符中完全具有Month the Day。所有月份都是3个字符(1月,2月,3月,4月),然后有一个空格,然后是2位数的日,或2个空格和1位数日。无论哪种方式,它总是最多可以添加6个字符。

答案 2 :(得分:1)

在这里,您询问日期/时间信息的可见格式。

  • 在SQ 2012及更高版本的MS SQL Server中,您可以使用FORMAT() 功能。如果您使用支持此功能的版本,我建议您使用它。请记住,第二个参数是CASE SENSITIVE
  • 在所有版本中,您可以使用CONVERT()函数 这句语法:
  

CONVERT(data_type [(length)],表达式[,样式])

请注意样式参数(整数),如果使用CONVERT,这很重要。使用这两种方法显示日期/时间信息的非常有用的参考是HERE,以下是一个很小的例子:

SQL Fiddle demo

查询1

SELECT
      FORMAT(SYSDATETIME(), 'MMM dd yyyy')  
    , CONVERT(VARCHAR(11), SYSDATETIME(), 100) -- note length set to (11)

<强> Results

|-------------|-------------|
| Oct 11 2015 | Oct 11 2015 |

答案 3 :(得分:0)

您可以使用RTRIM功能,而不是像在NoDisPlayName的答案中那样进行转换。

SELECT RIGHT('0' + RTRIM(MONTH(DateAdded)), 2)