[英]what is the to-char equivalent tsql/sql server 2008
我曾經使用過oracle,現在又被拋棄了T-SQL,我很快就會在做一門課程,但是到那時你能幫忙嗎。
我有一個列表,需要在幾分鍾內進行分組。
行日期數據樣本
SELECT ROWDATE,count(rowdate)
FROM [mydb].[dbo].[mytable]
GROUP BY ROWDATE
order by 1
2010-08-16 15:01:18.110 1
2010-08-16 15:01:18.203 1
2010-08-16 15:01:18.377 1
2010-08-16 15:01:18.453 1
2010-08-16 15:01:18.530 1
2010-08-16 15:01:18.610 1
2010-08-16 15:01:18.703 1
2010-08-16 15:01:18.813 1
2010-08-16 15:01:18.953 1
2010-08-16 15:01:19.173 1
2010-08-16 15:01:19.360 1
2010-08-16 15:01:19.483 1
2010-08-16 15:01:19.593 1
2010-08-16 15:01:19.673 1
2010-08-16 15:01:19.733 1
2010-08-16 15:01:19.813 1
2010-08-16 15:01:19.890 1
2010-08-16 15:01:19.970 1
2010-08-16 15:01:20.047 1
我只想按分鍾分組。
SELECT to_char(rowdate,'dd/MM/yyyy HH24:MI'),count(rowdate)
FROM mytable
GROUP BY to_char(rowdate,'dd/MM/yyyy HH24:MI')
order by 1
在sql server(T-SQL)上,等效腳本是什么?
TSQL等效於:
TO_CHAR(rowdate,'dd/MM/yyyy HH24:MI')
...是:
CONVERT(VARCHAR(16), rowdate, 20)
表達式“ 20”返回: yyyy-mm-dd hh:mi:ss(24h)
-這是VARCHAR(19),因此將其減少到VARCHAR(16)會忽略秒數。
DATETIME格式在TSQL中是一個真正的難題-使用SQL Server 2005,獲得可自定義格式的唯一真正方法是使用CLR函數,因此在C#中可以使用DateTime.ToString
方法...
參考:
那會是
convert(varchar, rowdate, 100)
格式不完全相同,但重要的是,它也要長達一分鍾。
編輯:
另外,您完全可以避免轉換為varchar:
group by dateadd(ms, -datepart(ms, rowdate) , dateadd(s, -datepart(s, rowdate), rowdate))
將日期時間降低到分鍾的使用時間(比使用字符串操作更好):
DATEADD(minute,DATEDIFF(minute,0,datetime),0)
因此,按分鍾分組,將是:
SELECT
DATEADD(minute,DATEDIFF(minute,0,ROWDATE),0)
,count(rowdate)
FROM [mydb].[dbo].[mytable]
GROUP BY DATEADD(minute,DATEDIFF(minute,0,ROWDATE),0)
order by 1
您是否有特定原因想要轉換為(var)char?
datepart(minute, rowdate)
它僅返回一個數字:datetime字段的分鍾部分。 分組非常容易。
否則,請使用CONVERT()或CAST()在字符類型之間進行轉換。 您還需要確保使用正確的格式。 這里還有更多相關信息: http : //www.mssqltips.com/tip.asp?tip=1145
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.