我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。
我怎么做呢?
我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。
我怎么做呢?
当前回答
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')
其他回答
试试下面的方法:
CONVERT(varchar(10), [MyDateTimecolumn], 20)
对于一个完整的约会时间,而不仅仅是约会,请:
CONVERT(varchar(23), [MyDateTimecolumn], 121)
查看本页转换样式:
http://msdn.microsoft.com/en-us/library/ms187928.aspx 或 SQL Server CONVERT()函数
强制转换或转换:
CAST的语法:
CAST ( expression AS data_type [ (length ) ])
CONVERT的语法:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
http://msdn.microsoft.com/en-us/library/ms187928.aspx
实际上,因为你要求了一个特定的格式:
REPLACE(CONVERT(varchar(10), Date, 102), '.', '-')
你可以转换你的日期在许多格式,语法很简单使用:
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
Try:
select replace(convert(varchar, getdate(), 111),'/','-');
更多关于ms sql技巧
你没有说哪个数据库,但是用mysql这里是一个从时间戳中获得日期的简单方法(varchar类型转换应该自动发生):
mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2008-09-16 |
+-------------+
1 row in set (0.00 sec)