我有Date Type colum,数据如下所示:
2011-07-01 00:00:00.000
我希望从像
这样的东西中汲取灵感2011-7-1
有我的方式,但可能会做得更好
SELECT CAST(YEAR(ModifiedDate) AS varchar(15)) + '-' + CAST(MONTH(ModifiedDate) AS varchar(15)) + '-' + CAST(DAY(ModifiedDate) AS varchar(15))
FROM Sales.SalesOrderDetail
答案 0 :(得分:1)
每条评论反馈和参考:https://sqlperformance.com/2015/06/t-sql-queries/format-is-nice-and-all-but
此CAST是ANSI标准与CONVERT
SELECT CAST(GetDate() as DATE)
为什么不使用FORMAT,一般应留给UI进行
为什么不使用CONVERT(VARCHAR(10),@变量,101)
答案 1 :(得分:-1)
您可以使用FORMAT
,CAST
或CONVERT
。
这将返回为不同文化格式化的日期部分:
DECLARE @ft DATETIME = '2011-07-01 00:00:00.000'
SELECT FORMAT(@FT, 'd', 'en-us')
结果:7/11/2011
DECLARE @ft DATETIME = '2011-07-01 00:00:00.000'
SELECT FORMAT(@ft, 'yyyy-M-d')
结果:2011-7-11
有关格式的更多信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017
这将返回datepart:
DECLARE @ft DATETIME = '2011-07-01 00:00:00.000'
SELECT CAST(@FT as date)
结果:2011-07-11
这为您提供了更多不同格式的选项:
DECLARE @ft DATETIME = '2011-07-01 00:00:00.000'
SELECT CONVERT(VARCHAR(10), @ft, 101)
结果:2011-07-01
您也可以使用文本代替变量:
SELECT CONVERT(VARCHAR(10), '2011-07-01 00:00:00.000', 101)
结果:2011-07-01
有关CAST和CONVERT的更多信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017
答案 2 :(得分:-1)
您可以使用FORMAT执行此操作。
DECLARE @DATE DATETIME
SET @DATE = '2011-07-01 00:00:00.000'
SELECT FORMAT(@DATE, 'yyyy-M-d')
Result: 2011-7-1