簡體   English   中英

什么是等效於tchar / sql server 2008的to-char

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM