我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。
我怎么做呢?
我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。
我怎么做呢?
当前回答
对于SQL Server 2008+,可以同时使用CONVERT和FORMAT。
例如,对于欧洲风格(例如德国)的时间戳:
CONVERT(VARCHAR, FORMAT(GETDATE(), 'dd.MM.yyyy HH:mm:ss', 'de-DE'))
其他回答
试试下面的方法:
CONVERT(varchar(10), [MyDateTimecolumn], 20)
对于一个完整的约会时间,而不仅仅是约会,请:
CONVERT(varchar(23), [MyDateTimecolumn], 121)
查看本页转换样式:
http://msdn.microsoft.com/en-us/library/ms187928.aspx 或 SQL Server CONVERT()函数
SQL Server 2012有一个新函数,FORMAT: http://msdn.microsoft.com/en-us/library/ee634924.aspx
并且您可以使用自定义日期时间格式字符串:http://msdn.microsoft.com/en-us/library/ee634398.aspx
这些页面暗示它也可以在SQL2008R2上使用,但是我没有一个方便的页面来测试这种情况。
示例用法(Australian datetime):
FORMAT(VALUE,'dd/MM/yyyy h:mm:ss tt')
OP提到了datetime格式。对我来说,时间成了绊脚石。 我认为在格式化之前删除时间部分(通过强制转换datetime到date)会更简洁一些。
convert( varchar(10), convert( date, @yourDate ) , 111 )
简单使用“转换”,然后使用“格式”得到你想要的日期格式
DECLARE @myDateTime DATETIME
SET @myDateTime = '2008-05-03'
SELECT FORMAT(CONVERT(date, @myDateTime ),'yyyy-MM-dd')
最短最简单的方法是:
DECLARE @now AS DATETIME = GETDATE()
SELECT CONVERT(VARCHAR, @now, 23)