我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。
我怎么做呢?
我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。
我怎么做呢?
当前回答
你可以转换你的日期在许多格式,语法很简单使用:
CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
代码是一个整数,这里3是第三个没有世纪的格式,如果你想要世纪,只需将代码更改为103。
在你的情况下,我只是转换和限制大小的nvarchar(10)像这样:
CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15
详见:http://www.w3schools.com/sql/func_convert.asp
另一个解决方案(如果你的日期是一个Datetime)是一个简单的CAST:
CAST(MY_DATE_TIME as DATE) => 2016-09-15
其他回答
declare @dt datetime
set @dt = getdate()
select convert(char(10),@dt,120)
我有固定的数据长度的字符(10),因为你想要一个特定的字符串格式。
使用Microsoft Sql Server:
--
-- Create test case
--
DECLARE @myDateTime DATETIME
SET @myDateTime = '2008-05-03'
--
-- Convert string
--
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
对于SQL Server 2008+,可以同时使用CONVERT和FORMAT。
例如,对于欧洲风格(例如德国)的时间戳:
CONVERT(VARCHAR, FORMAT(GETDATE(), 'dd.MM.yyyy HH:mm:ss', 'de-DE'))
你可以转换你的日期在许多格式,语法很简单使用:
CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
代码是一个整数,这里3是第三个没有世纪的格式,如果你想要世纪,只需将代码更改为103。
在你的情况下,我只是转换和限制大小的nvarchar(10)像这样:
CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15
详见:http://www.w3schools.com/sql/func_convert.asp
另一个解决方案(如果你的日期是一个Datetime)是一个简单的CAST:
CAST(MY_DATE_TIME as DATE) => 2016-09-15
你可以使用DATEPART(DATEPART, VARIABLE)。例如:
DECLARE @DAY INT
DECLARE @MONTH INT
DECLARE @YEAR INT
DECLARE @DATE DATETIME
@DATE = GETDATE()
SELECT @DAY = DATEPART(DAY,@DATE)
SELECT @MONTH = DATEPART(MONTH,@DATE)
SELECT @YEAR = DATEPART(YEAR,@DATE)