我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。

我怎么做呢?


当前回答

Try:

select replace(convert(varchar, getdate(), 111),'/','-');

更多关于ms sql技巧

其他回答

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')

时间格式为'yyyy-mm-dd 00:00:00.000'


SELECT CAST( CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME) ; 
select REPLACE(CONVERT(VARCHAR, FORMAT(GETDATE(), N'dd/MM/yyyy hh:mm:ss tt')),'.', '/')

结果是05/05/2020 10:41:05 AM

你没有说哪个数据库,但是用mysql这里是一个从时间戳中获得日期的简单方法(varchar类型转换应该自动发生):

mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2008-09-16  | 
+-------------+
1 row in set (0.00 sec)

最短最简单的方法是:

DECLARE @now AS DATETIME = GETDATE()

SELECT CONVERT(VARCHAR, @now, 23)