我需要使用 sql 语句的日期字符串,例如..
select getDate()
这将返回2010-06-08 16:31:47.667
但我需要这种格式201006081631
=yyyymmddhoursmin
我怎样才能得到这个?
谢谢
我需要使用 sql 语句的日期字符串,例如..
select getDate()
这将返回2010-06-08 16:31:47.667
但我需要这种格式201006081631
=yyyymmddhoursmin
我怎样才能得到这个?
谢谢
单程
select left(replace(replace(replace(
convert(varchar(30),getDate(),120),' ',''),'-',''),':',''),12)
或者像这样
select replace(replace(replace(
convert(varchar(16),getDate(),120),' ',''),'-',''),':','')
或者
select convert(varchar(8), getdate(),112) +
(replace(convert(varchar(5), getdate(),108),':',''))
另一种方式...
DECLARE @d DATETIME
SELECT @d = '2010-06-09 1:37:58.030'
Select Convert(BigInt, 100000000) * Year(@d)
+ Month(@d) * 1000000
+ Day(@d) * 10000
+ DatePart(Hour, @d) * 100
+ DatePart(Minute, @d)
这里返回的数据类型是 BigInt。
使用DATEPART:
SELECT CAST(DATEPART(yyyy, x.dt) AS VARCHAR(4)) +
CASE WHEN DATEPART(mm, x.dt) < 10 THEN '0'+ CAST(DATEPART(mm, x.dt) AS VARCHAR(1)) ELSE CAST(DATEPART(mm, x.dt) AS VARCHAR(2)) END +
CASE WHEN DATEPART(dd, x.dt) < 10 THEN '0'+ CAST(DATEPART(dd, x.dt) AS VARCHAR(1)) ELSE CAST(DATEPART(dd, x.dt) AS VARCHAR(2)) END +
CASE WHEN DATEPART(hh, x.dt) < 10 THEN '0'+ CAST(DATEPART(hh, x.dt) AS VARCHAR(1)) ELSE CAST(DATEPART(hh, x.dt) AS VARCHAR(2)) END +
CASE WHEN DATEPART(mi, x.dt) < 10 THEN '0'+ CAST(DATEPART(mi, x.dt) AS VARCHAR(1)) ELSE CAST(DATEPART(mi, x.dt) AS VARCHAR(2)) END
FROM (SELECT '2010-06-08 16:31:47.667' dt) x
对于 SQL Server 2005+,我会考虑创建一个用于格式化日期的 CLR 函数——C# DateTime.ToString() 支持提供更正常的日期格式化方法。