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

我怎么做呢?


当前回答

Try:

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

更多关于ms sql技巧

其他回答

declare @dt datetime

set @dt = getdate()

select convert(char(10),@dt,120) 

我有固定的数据长度的字符(10),因为你想要一个特定的字符串格式。

Try:

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

更多关于ms sql技巧

select REPLACE(CONVERT(VARCHAR, FORMAT(GETDATE(), N'dd/MM/yyyy hh:mm:ss tt')),'.', '/')

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

对于SQL Server 2008+,可以同时使用CONVERT和FORMAT。

例如,对于欧洲风格(例如德国)的时间戳:

CONVERT(VARCHAR, FORMAT(GETDATE(), 'dd.MM.yyyy HH:mm:ss', 'de-DE'))

试试下面的SQL:

select REPLACE(CONVERT(VARCHAR(24),GETDATE(),103),'/','_') + '_'+ 
       REPLACE(CONVERT(VARCHAR(24),GETDATE(),114),':','_')