Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Cast函数仅显示datetime中的月份和日期_Sql_Sql Server_Tsql_Datetime - Fatal编程技术网

Sql Cast函数仅显示datetime中的月份和日期

Sql Cast函数仅显示datetime中的月份和日期,sql,sql-server,tsql,datetime,Sql,Sql Server,Tsql,Datetime,我是SQL的初学者,我试图将DateAdded列返回为OrderDate,只包含月份和日期,但我似乎无法正确使用语法。我感谢任何人的帮助。使用DatePart函数从Datetime类型中提取day和month SELECT DateAdded, Cast(DateAdded AS Date) AS DateAddedV1, Cast(DateAdded AS Time) AS DateTime, SELECT CAST(DateAdded AS Date(

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

使用
DatePart
函数从
Datetime
类型中提取
day
month

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
更新:仅通过使用
cast
功能,您无法提取
。如果您想将月份和日期保留在同一列中

Select Datepart(Month,DateAdded) AS [Month], -- Month(Dateadded)
       Datepart(Day,DateAdded) as [Day], -- Day(Dateadded)
       ..
From   Products
要获取前导零的使用
函数,并从DateAdded中提取
时间
,请使用
转换
函数和
108

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

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


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

我想这学期我正在做这项作业。这就是我的结局,因为它必须使用CAST函数来完成:

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]
       .........

这是因为varchar总是在前6个字符中精确地包含月份和日期。所有月份都是3个字符(一月、二月、三月、四月),然后是一个空格和一个2位数的日期,或者是两个空格和一个1位数的日期。无论哪种方式,它总是加起来最多6个字符。

这里您要询问的是日期/时间信息的可见格式

  • 在SQ 2012及更高版本的MS SQL Server中,您可以使用 功能。如果您使用的版本支持此功能,我建议您使用它。请记住,第二个参数区分大小写
  • 在所有版本中,您都可以使用具有 此语法:
转换(数据类型[(长度)],表达式[,样式]

请特别注意style参数(整数),如果使用CONVERT,这一点很重要。使用任一方法显示日期/时间信息的一个非常有用的参考是,下面是一个小示例:

查询1

SELECT DateAdded,
    CAST(DateAdded AS date) AS DateOnly,
    CAST(DateAdded AS time) AS TimeOnly,
    CAST(DateAdded AS varchar(6)) MonthDay
FROM Products;
SELECT
      FORMAT(SYSDATETIME(), 'MMM dd yyyy')  
    , CONVERT(VARCHAR(11), SYSDATETIME(), 100) -- note length set to (11)

SELECT DateAdded,
    CAST(DateAdded AS date) AS DateOnly,
    CAST(DateAdded AS time) AS TimeOnly,
    CAST(DateAdded AS varchar(6)) MonthDay
FROM Products;
SELECT
      FORMAT(SYSDATETIME(), 'MMM dd yyyy')  
    , CONVERT(VARCHAR(11), SYSDATETIME(), 100) -- note length set to (11)

@ZackSpideyDavidson他们可能希望您使用
CAST(DateAdded as Date)
-我认为没有办法使用
CAST
功能删除年份。另外,使用
CAST
作为格式化工具是愚蠢的。应该注意的是,作为规则,您不应该格式化数据以在数据库中显示。这是一项通常由应用程序处理的任务。这个问题听起来像是基于家庭作业、就业测试或醉酒挑战。这看起来真的像我目前正在研究的家庭作业问题(OregonTech CST324 DB类,来自Murach的SQL Server 2012 for devs book):除了第四行(甚至是相同的列和表名!),我写了所有的行,这就是我一直坚持的。我会使用CONVERT,但作业中说use CAST.FORMAT()的性能最差。你可以在这里读到:我发现月('Date')和年('Date')方法的工作速度比任何数量级的方法都快。