我需要使用sql语句的日期字符串,如..
select getDate()
这将返回2010-06-08 16:31:47.667
但我需要这种格式201006081631
= yyyymmddhoursmin
我怎么能得到这个?
由于
答案 0 :(得分:3)
单程
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),':',''))
答案 1 :(得分:2)
另一种方式......
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。
答案 2 :(得分:1)
使用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() supports providing a more normal means of formatting the date。