我想在本机SQL中执行一个看起来像这样的查询:
SELECT
AVG(t.column) AS average_value
FROM
table t
WHERE
YEAR(t.timestamp) = 2013 AND
MONTH(t.timestamp) = 09 AND
DAY(t.timestamp) = 16 AND
t.somethingelse LIKE 'somethingelse'
GROUP BY
t.somethingelse;
Run Code Online (Sandbox Code Playgroud)
如果我试图在Doctrine的查询生成器中实现这个,如下所示:
$qb = $this->getDoctrine()->createQueryBuilder();
$qb->select('e.column AS average_value')
->from('MyBundle:MyEntity', 'e')
->where('YEAR(e.timestamp) = 2013')
->andWhere('MONTH(e.timestamp) = 09')
->andWhere('DAY(e.timestamp) = 16')
->andWhere('u.somethingelse LIKE somethingelse')
->groupBy('somethingelse');
Run Code Online (Sandbox Code Playgroud)
我得到错误异常
[语法错误]第0行,第63行:错误:预期的已知函数,得到'年'
如何使用Doctrines查询构建器实现我的查询?
笔记:
YEAR()等语句,例如,如此处所示.但我正在寻找避免包含第三方插件的方法.我正在尝试获得结果,它只显示在CURRENT月的最后一天之前的OrderDates.我猜它会是这样的......
SELECT OrderDate
FROM Orders
WHERE OrderDate < (code for first day of the next month?)
Run Code Online (Sandbox Code Playgroud) 在文档中,我只能找到一种从字符串创建日期的方法,例如DATE '2000-01-02'.这完全令人困惑和恼人.我想要的是一个带三个参数的函数,所以我可以make_date(2000, 1, 2)使用整数而不是字符串,并返回一个日期(不是字符串).PostgreSQL有这样的内置函数吗?
我问这个的原因是因为我不喜欢将字符串用于不是字符串的东西.日期不是字符串; 他们是约会对象.
我使用的客户端库是Haskell的HDBC-PostgreSQL.我正在使用PostgreSQL 9.2.2.
我试图获得每天注册用户的数量.目前我正在使用它
$sql = "SELECT name, email FROM users WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) < lastModified"
Run Code Online (Sandbox Code Playgroud)
但我不确定这是每天工作还是每24小时工作一次?
例如,22小时前注册的用户不应该像今天(=星期二)的用户一样返回
我正在努力仔细并仔细地清理我的一些旧的(生产)代码.我要做的一件事就是将我的所有用法转换java.util.Date为LocalDate和DateTime.
但是,当我工作的时候,我注意到今晚有一个很大的障碍.我有这个代码:
ResultSet results = stmt.executeQuery();
Date last = results.getDate("LAST_DELIVERY_DATE");
Date next = results.getDate("NEXT_DELIVERY_DATE");
boolean received;
if (last == null && next == null) {
received = true; // order is not open
} else if (last == null) {
received = false;
} else {
received = true;
}
Run Code Online (Sandbox Code Playgroud)
我转换last和next到:
LocalDate last = new LocalDate(results.getDate("LAST_DELIVERY_DATE"));
LocalDate next = new LocalDate(results.getDate("NEXT_DELIVERY_DATE"));
Run Code Online (Sandbox Code Playgroud)
和Netbeans强调if == null并说:
Unnecessary test for null …Run Code Online (Sandbox Code Playgroud) 我有下面的查询,其中日期是硬编码的.我的目标是删除已编码的日期; 查询应该在运行时拉取上个月的数据.
select count(distinct switch_id)
from xx_new.xx_cti_call_details@appsread.prd.com
where dealer_name = 'XXXX'
and TRUNC(CREATION_DATE) BETWEEN '01-AUG-2012' AND '31-AUG-2012'
Run Code Online (Sandbox Code Playgroud)
我应该使用sysdate-15功能吗?
我知道格列高利历从1582年10月15日开始,在从儒略历过渡期间,已经放弃了10天.
当我在做这个查询时:
SELECT STR_TO_DATE('1582-10-05', '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果:
1582-10-15 (the 10 days difference).
Run Code Online (Sandbox Code Playgroud)
但是当我试图在这些日期之间进行匹配时,我得到了原始日期(10月5日而不是15日).
例如:
SELECT STR_TO_DATE('1582-10-05', '%Y-%m-%d') = STR_TO_DATE('1582-10-15', '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
我得到了一个错误的回应,虽然你会期望得到一个真实的,因为10月5日实际上算作10月15日,正如我们在第一个例子中看到的那样.
任何人都可以解释这里发生了什么?
如何将日期为"2012-08-03"的列转换为Postgres中的日期?
如何在T-SQL中获取本月最后一个星期五的日期?
我将把年份和月份作为参数传递,例如,201211.如果我通过'201211'作为参数,它应该返回'20121130'作为答案,因为它是11月的最后一个星期五的日期.
请有人在这里解释我.
之间有什么区别curdate()和current_date在MySql?
sql ×7
mysql ×4
postgresql ×2
sql-server ×2
t-sql ×2
calendar ×1
date ×1
doctrine-orm ×1
java ×1
jodatime ×1
oracle ×1