我有一个基本查询:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
我想在输出中添加另一列...让我们称之为“差异”以找出'dtcreated'和'dtlastupdated'之间的天数所以例如如果记录1的dtcreated为1/1 / 11和dtlastupdated是1/1/12,“差异”列将是“365”。
这可以在查询中完成吗?
答案 0 :(得分:28)
您可以使用DATEDIFF
:
declare @start datetime
declare @end datetime
set @start = '2011-01-01'
set @end = '2012-01-01'
select DATEDIFF(d, @start, @end)
results = 365
所以对于您的查询:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(d, dtCreated, dtLastUpdated) as Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
答案 1 :(得分:5)
要查找两个日期之间的天数,请使用:
DATEDIFF ( d, startdate , enddate )
答案 2 :(得分:2)
我会使用DATE_DIFF函数提供如下所示的值:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(d, dtLastUpdated, dtCreated) AS Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
编辑:如果使用MySQL,你省略了'd',留下你的
DATEDIFF(dtLastUpdated, dtCreated) AS Difference
答案 3 :(得分:1)
如果您使用MySQL,则有DATEDIFF函数计算两个日期之间的天数:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(dtLastUpdated, dtCreated) as Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
答案 4 :(得分:0)
DATEDIFF(d, 'Start Date', 'End Date')
做到这一点
答案 5 :(得分:0)
DATEDIFF 函数用于计算所需日期之间的天数
如果您是给定日期的当前日期与字符串格式的区别日期
SELECT * , DATEDIFF(CURDATE(),STR_TO_DATE('01/11/2017', '%m/%d/%Y')) AS days FROM consignments WHERE code = '1610000154'
在这里 STR_TO_DATE ():获取一个字符串并返回由格式掩码指定的日期;
例如:
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(dtLastUpdated, dtCreated) as Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > '2012-01-01 00:00:00')
在mysql服务器5.7.17上测试
答案 6 :(得分:0)
正如@Forte L.所述,您也可以执行以下操作;
SELECT dtCreated
, bActive
, dtLastPaymentAttempt
, dtLastUpdated
, dtLastVisit
, DATEDIFF(day, dtCreated, dtLastUpdated) Difference
FROM Customers
WHERE (bActive = 'true')
AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
答案 7 :(得分:0)
from odoo.addons.web.controllers.main import Database # importing base controller class
class MyDatabase(Database):
def _render_template(self, **d):
d.setdefault('manage',True)
d['insecure'] = odoo.tools.config.verify_admin_password('admin')
d['list_db'] = odoo.tools.config['list_db']
d['langs'] = odoo.service.db.exp_list_lang()
d['countries'] = odoo.service.db.exp_list_countries()
d['pattern'] = DBNAME_PATTERN
#additional parameters if any
d['databases'] = []
try:
d['databases'] = http.db_list()
d['incompatible_databases'] = odoo.service.db.list_db_incompatible(d['databases'])
except odoo.exceptions.AccessDenied:
monodb = db_monodb()
if monodb:
d['databases'] = [monodb]
return env.get_template("your_modified_template.html").render(d) #render your modified html template.
答案 8 :(得分:0)
两天之内没有天
DECLARE @date1 DATE='2015-01-01',
@date2 DATE='2019-01-01',
@Total int=null
SET @Total=(SELECT DATEDIFF(DAY, @date1, @date2))
PRINT @Total