English 中文(简体)
过去24小时每排一个排一个临时桌子?
原标题:How to make temporary table with row for each of last 24 hours?
  • 时间:2011-10-05 02:21:12
  •  标签:
  • sql

基本上,我想问一下,过去24小时每小时每小时增长一次会产生结果:

01/01/2011 00:00:00
01/01/2011 01:00:00
01/01/2011 02:00:00
...

Any way I can do that without cursors and temp tables?

最佳回答

One row for each hour for a given date (SQL Server solution).

select dateadd(hour, Number,  20110101 )
from master..spt_values
where type =  P  and
      number between 0 and 23

结果是每小时24小时每小时增长一次

select dateadd(hour, datediff(hour, 0, getdate()) - number, 0)
from master..spt_values
where type =  P  and
      number between 0 and 23
问题回答

......在服务器上,你可以这样做......

WITH cte
AS
(
  SELECT CAST( 1-jan-2011  AS DATETIME) AS  date 
  UNION ALL
  SELECT DATEADD(hh, 1, [date]) FROM cte WHERE [date] <  1-jan-2011 23:00 
)
SELECT [date] FROM cte

......在现实中,一个仅限(0至23)的桌子将更为有用,因为你可以随时增加时间。

WITH cte
AS
(
  SELECT 0 as  Hour 
  UNION ALL
  SELECT hour + 1 FROM cte WHERE hour < 23
)
SELECT DateAdd(hh, hour,  1-jan-2010 ) FROM cte

Another, slightly more isoteric way would be to use the row_number ranking function against the first 24 rows of some abitrary object (like spt_values)...

WITH cte AS
(
  SELECT n
  FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY type ) FROM master..spt_values ) D ( n )
  WHERE n < 24
)
SELECT dateadd(hh,n, 01-jan-2011 ) FROM cte

Here is the simple way...

SELECT  01/01/2011 00:00:00  as [hour], blah, blah2
UNION ALL
SELECT  01/01/2011 01:00:00  as [hour], blah, blah2
UNION ALL
SELECT  01/01/2011 02:00:00  as [hour], blah, blah2
UNION ALL
...etc 24 times.

在某个特定平台或解决某个具体问题方面,也许会有更好的办法,但为了找到答案,你必须提供更多细节。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签