最近,我开始熟悉PostgreSQL(使用8.2),并发现date_trunc函数非常有用,可以轻松地在某些天/月/等之间匹配时间戳。我相信,该函数的真正有用之处在于它以时间戳的格式保存输出。
我不得不切换到mySQL(5.0),并发现一些日期函数与之相比相当缺乏。extract函数似乎很有用,我找到的date函数解决了我的一些问题,但是有没有办法复制PostgreSQL的date_trunc?
以下是我如何使用date_trunc将查询的时间戳与最近4个月(包括当前月份)进行匹配的示例,但前提是这个月已经过去了一周:
WHERE date_trunc('month', QUE
当我运行这个查询时
WITH install_count_join_date AS (
SELECT
date_trunc('month', join_date) AS date,
COUNT(*) AS "inscountjoin"
FROM
apps202_prod.search
WHERE
join_date >= '2016-06-01'
AND
app_id = 3
GROUP BY
date_trunc('month', join_
我正在将一个MySQL查询移植到Oracle。
INSERT INTO
"stagedInserts" ("systemId", "timestamp")
SELECT
:systemId AS "systemId", "d"."time" AS "timestamp"
FROM
"data" "d"
WHERE
"d"."systemId" = :systemId
GROUP BY
TRUNC(&
我设法选择了当前一周的数据,但周本身从周日开始,这对我来说不是正确的格式,它应该从星期一开始。我使用MySQL查询数据。
SELECT IFNULL(SUM(rendeles_dbszam),0) as eladott_pizzak_szama
FROM rendeles
WHERE WEEK(rendeles_idopont) = WEEK(CURRENT_DATE())
我在Oracle中有一个表,其中包含每日值的总和。
我的目标是让这个表显示每月的值总和,而不是每天。
我使用下面的查询完成了这项工作:
select to_char(dateid, 'YYYY-MM') as thedate, count(*)
from picture_table
group by to_char(dateid, 'YYYY-MM')
order by 1, 2
这里的问题是,我必须将这个oracle表转移到MySQL中的一个表中。由于MySQL的日期数据结构被强制为'YYYY-MM-DD‘格式,所以我想我必须将我所有的月份都附加到
我的表有4列,即recordID、expAverage (代表指数平均值)、totalVolume和calculationDate。我在MySQL中编写了这个查询,以便按小时打开、高、低和关闭组,它运行得非常好。我不确定这是否是编写此查询的最佳方式,但它为我提供了正确的输出。现在,我需要将这个查询更改为Oracle。我在Oracle中尝试过类似的方法,但是查询似乎不起作用。如何将此查询转换为在Oracle数据库中工作?
SELECT
recordID,
COUNT(c1.recordID) as totalRecords,
MAX(c1.expAverage) AS h
我有两个问题:
我希望将数据类型为“日期”的字段与给定日期进行比较。DB是oracle,作为mysql用户,我发现很难提出简单的查询。field("date_closed")将日期存储为UTC格式的(24-Aug-2011 18:55:11 for example),我希望将其转换为PST以进行比较。我尝试了这个查询,但是它在数据集中返回了一些额外的行(很明显):
select * from table1 where trunc(date_closed)=to_date('2011-08-24','yyyy-mm-dd')
在比较之前,我如何
我试图删除的记录,是较早的20天或1年的基础上,一个日期字段。
在mysql中,我可以
DELETE FROM Table_name
WHERE Date_column < DATEADD(day,-20,GETDATE())
DELETE FROM Table_name
WHERE Date_column < DATEADD(year,-1,GETDATE())
甲骨文有像Add_month()这样的方法吗?
我使用的是Oracle 11g,我在WHERE子句中使用了一个简单的查询(report)参数,但是我无法有效地使用OR操作。
我的WHERE条款是:
WHERE
1=1
AND
(
TRUNC(SYSDATE) - TRUNC(seg.START) BETWEEN 0 AND [DaysBeforClass]
OR
TRUNC(seg.END) - TRUNC(SYSDATE) BETWEEN 0 AND [DaysAfterClass]
)
请注意:
seg.START和seg.END是日期时间类型
[DaysBeforClass]和[DaysAfterClass]
我需要一个查询,将动态拉取过去12个月的装运数据(不包括当前月)。因此,由于今天是2016年9月30日,我需要2015年9月1日到2016年8月31日的数据。明天,查询将更改为10-1-15到9-30-16的日期范围。
这是我目前所拥有的:
WHERE (shipdate BETWEEN TRUNC(sysdate, 'Year') AND sysdate)
此查询从日历年开始到今天的日期提取数据,而不是前12个完整的月份。我已经用MySQL和MS SQL Server找到了这个问题的答案,但甲骨文找不到。如何在Oracle中实现这一点?
响应:
错误代码: 1064。您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行使用接近“cohort_items as (选择月份(U.created_at)作为队列”的正确语法。
这是我的代码,显示错误:
-- - users (id, created_at)
WITH cohort_items AS (
SELECT month(U.created_at) AS cohort_month,
id AS user_id
FROM public.users U ORDER BY 1,2)
我试图查找语法错误,但没有成功。请帮我找出我哪里做错了
我想找到一种方法来确定这个日历月中使用Redshift的剩余工作日数。我现在有一个朋友写的MySQL版本。我不知道它是怎么写成另一种方言的。但如果有人能帮我翻译,这将是一个非常有用的工具!
输出应该像excel中的networkdays()函数一样工作。在这个函数中,提供了一个begin_date和一个end_date作为函数的参数。它计算开始日期和结束日期之间的工作日数(非周末日历日)。
下面是当前的MySQL:
SELECT 1 AS pk ,COUNT(*) AS remaining
FROM (
SELECT WEEKDAY(DATE(DATE_FORMAT(CONVERT_T
我对甲骨文非常陌生(几个小时)。我的经验都是关于MySQL的。
我的查询在我的脑海中是非常基本的,但是组by似乎没有返回预期的结果。经过几个小时的搜索,我希望这里有人能帮忙!
这是我的代码:
SELECT trunc(start_time), display_name, count(*)
FROM TblName
WHERE (DISPLAY_NAME like '%Advise the customer how they can change their marketing preferences%')
OR (DISPLAY_NAME like '%In
我正在尝试建立一个每周排行榜,我想知道如何才能获得时间戳在当前周(星期一到星期日)的行。我试过了: SELECT id, COUNT(*) FROM Data WHERE created::date BETWEEN date $1 and date $2 GROUP BY id ORDER BY COUNT(*) DESC LIMIT 10; 但是,我被困在如何在不对行进行硬编码的情况下,在本周内获得行。created是TIMESTAMP类型的列。 我看到在MySQL中有一个叫做YEARWEEK()的东西。Postgres中有没有类似的东西?如果没有,我该怎么做才能得到想要的结果呢?
我正在尝试使用以下查询获取过去30天的计数-
SELECT date_occured, COUNT(*) FROM problem
WHERE date_occured >= (CURRENT_DATE - 30)
GROUP BY date_occured;
//date_occured field is of type DATE.
基本上,在我的查询中,我试图只比较条件date_occured >= (CURRENT_DATE - 30)中的日期部分,但它似乎也比较了时间。
我试过TRUNC,如下所示-
TRUNC(date_occured) >= TRUNC(CURR
我有一个Oracle查询,我正在尝试用MySQL重写它.
PS :这里的日期是任意的,在实际场景中,我在Tableau中使用这个自定义查询,它接受用户定义的Dates.The -- "Reference“与"Start Date”进行比较。
Oracle SQL查询的一部分:
CASE WHEN psr.dt_orgn IS NULL THEN NULL
ELSE
CASE WHEN CAST('2017-05-22' AS DATE) >= CAST('2017-06-22' AS DATE) THEN TRUNC(psr.dt_org
所以我想要从今年年初到上月底的记录,而不是简单的-30。我做了以下工作,但问题是它只包括上个月的第一天(01-07-2015)的记录。
SELECT start_date,customer_code, "value", quantity
FROM dw_mysql."Vouchers"
WHERE start_date BETWEEN date_trunc('year', now()) AND
date_trunc('month', NOW()) - INTERVAL '1 months';
需要帮助。我尝试在查询中的where子句中添加select子句,以便它可以选择与设备系统日期相同的数据。
我的代码工作:(EXTRACT(YEAR FROM W.BrwDate) = '2021')
我尝试添加select sysdate from dual;,这样就不需要编写特定的年份,并且每年都可以使用查询。但是如果我把代码组合在一起,那就没用了
WHERE (EXTRACT(YEAR FROM RegYear = (select sysdate extract (year from dual))))
那么,有什么方法可以解决我的错误吗?
我找到了一篇描述的文章。然而,本文作者使用了MySQL:
select count(*), DATE_FORMAT(created_at,"%Y-%m-%d") as created_day FROM widgets GROUP BY created_day
此外,我将unix时间戳存储在started_at字段下,因此首先必须将其转换为日期或时间戳格式。我怎样才能在PostgreSQL中做到这一切?