存储时间戳值不同PostgreSQL中,当数据类型是WITH TIME ZONE对WITHOUT TIME ZONE?可以用简单的测试用例说明差异吗?
我有这样的查询,很好地生成两个给定日期之间的一系列日期:
select date '2004-03-07' + j - i as AllDate
from generate_series(0, extract(doy from date '2004-03-07')::int - 1) as i,
generate_series(0, extract(doy from date '2004-08-16')::int - 1) as j
Run Code Online (Sandbox Code Playgroud)
它在2004-03-07和之间生成162个日期2004-08-16,这就是我想要的.这段代码的问题是,它不会得到正确的答案时,这两个日期都不同年份,例如,当我尝试2007-02-01和2008-04-01.
有更好的解决方案吗?
我有一个added_at类型的列timestamp without time zone.我希望它的默认值是当前的日期时间但没有时区.该函数也now()返回一个时区.
我该如何解决这个问题?
我在从Postgres正确选择日期时遇到问题 - 它们以UTC格式存储,但未正确转换为Date()函数.
将时间戳转换为日期会给我错误的日期,如果它超过太平洋标准时间下午4点.
2012-06-21应该是2012-06-20这种情况.
该starts_at列数据类型是timestamp without time zone.这是我的疑问:
无需转换为PST时区:
Select starts_at from schedules where id = 40;
starts_at
---------------------
2012-06-21 01:00:00
Run Code Online (Sandbox Code Playgroud)
转换给出了这个:
Select (starts_at at time zone 'pst') from schedules where id = 40;
timezone
------------------------
2012-06-21 02:00:00-07
Run Code Online (Sandbox Code Playgroud)
但是都没有转换为时区中的正确日期.
postgresql timezone datetime rails-postgresql postgresql-9.1
我有一个PostgreSQL 8.4服务器,每天晚上01:00重新启动(不要问),需要获取连接用户列表(即他们的时间戳u.login > u.logout):
SELECT u.login, u.id, u.first_name
FROM pref_users u
WHERE u.login > u.logout and
u.login > now() - interval '24 hour'
ORDER BY u.login;
login | id | first_name
----------------------------+----------------+-------------
2012-03-14 09:27:33.41645 | OK171511218029 | Alice
2012-03-14 09:51:46.387244 | OK448670789462 | Bob
2012-03-14 09:52:36.738625 | OK5088512947 | Sergej
Run Code Online (Sandbox Code Playgroud)
但是比较u.login > now()-interval '24 hour'也会在最后01:00之前提供用户,这很糟糕,尤其是.在早上.
是否有任何有效的方法来获取自上次01:00以来没有使用字符串杂技的登录to_char()?
(免责声明:PostgreSQL新手.)
好吧,据我所知,我的功能与我见过的样本非常相似.有人能否告诉我如何让这个工作?
create or replace function get_user_by_username(
username varchar(250),
online boolean
) returns setof record as $$
declare result record;
begin
if online then
update users
set last_activity = current_timestamp
where user_name = username;
end if;
return query
select
user_id,
user_name,
last_activity,
created,
email,
approved,
last_lockout,
last_login,
last_password_changed,
password_question,
comment
from
users
where
user_name = username
limit 1;
return;
end;
$$ language plpgsql;
Run Code Online (Sandbox Code Playgroud) 我的服务器在中部时间.我想使用东部时间渲染时间戳.
例如,我想呈现2012-05-29 15:00:00为2012-05-29 16:00:00 EDT.
我怎样才能实现它?
to_char('2012-05-29 15:00:00'::timestamptz at time zone 'EST5EDT', 'YYYY-MM-DD HH24:MI:SS TZ')给2012-05-29 16:00:00(没有区域).
to_char('2012-05-29 15:00:00'::timestamp at time zone 'EST5EDT', 'YYYY-MM-DD HH24:MI:SS TZ')给2012-05-29 14:00:00 CDT(错).
这个有用,但它太复杂了必须有一个更简单的方法: replace(replace(to_char(('2012-05-29 15:00:00'::timestamptz at time zone 'EST5EDT')::timestamptz, 'YYYY-MM-DD HH24:MI:SS TZ'), 'CST', 'EST'), 'CDT', 'EDT')
我是Postgresql的新手,我正在使用WCF服务.
这是我的代码片段:
$.ajax({
url: '../Services/AuctionEntryServices.svc/InsertAuctionDetails',
data: JSON.stringify({ "objAuctionEntryEntity": {
"AuctionNO": '',
"AuctionDate": $('[Id$="lblAuctionDateVal"]').text(),
"TraderID": $('[Id$="ddlTraderName"] option:selected').val(),
"Grade": $('[Id$="ddlGrade"] option:selected').val(),
"Varity": $('[Id$="ddlVarity"] option:selected').val(),
"QuntityInAuction": $('#txtQuantityForAuction').val(),
"AuctionRate": $('#txtAuctionRate').val(),
"BrokerID": a[0],
"IsSold": $('#chlIsSold').is(':checked'),
"CreatedBy": $.parseJSON(GetCookie('Admin_User_In_Mandi')).UserID,
"UpdatedBy": $.parseJSON(GetCookie('Admin_User_In_Mandi')).UserID,
"CreationDate": GetCurrentDate().toMSJSON(),
"IsActive": true,
"AuctionTransaction": arrAuctionTransaction,
"MandiID": $.parseJSON(GetCookie('Admin_User_In_Mandi')).MandiID,
"FarmerID": _ownerid,
"AuctionNO": _auctionno,
"AmmanatPattiID": _ammantpattiid,
"ToTraderID": b[0],
"ToTraderName": $('#txtOtherBuyerNameEN').val(),
"ToTraderName_HI": $('#txtOtherBuyerNameHI').val()
}
}),
type: 'POST',
contentType: 'application/json',
dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)
这里:
$('[Id$="lblAuctionDateVal"]').text() = "20/8/2013 14:52:49"
Run Code Online (Sandbox Code Playgroud)
我的这个领域的数据类型是timestamp without time zone.
如何将此字符串转换为timestamp without time zone数据类型?
我正在使用SQL transact命令将Unix脚本转换为PostgreSQL命令.
我有一个包含字段last_update_time(xtime)的记录的表,我想选择表中已在选定时间段内更新的每个记录.
比如,当前时间05/01/2012 10:00:00和所选时间是04/01/2012 23:55:00.如何从表中选择在这些日期之间更新的所有记录.在发出psql命令之前,我已在Unix脚本中将2次转换为秒,并计算了2个时间段之间的间隔(以秒为单位).
我觉得有点像
SELECT A,B,C FROM table
WHERE xtime BETWEEN now() - interval '$selectedtimeParm(in secs)' AND now();
Run Code Online (Sandbox Code Playgroud)
我无法评价Parm的selectedtimeParm-它不妥善解决.
编者按:我没有改变不正确的使用条款period,time frame,time并date为DateTime类型timestamp,因为我讨论,在我的答案.
我有下表MyTable:
id ? value_two ? value_three ? value_four
???????????????????????????????????????????
1 ? a ? A ? AA
2 ? a ? A2 ? AA2
3 ? b ? A3 ? AA3
4 ? a ? A4 ? AA4
5 ? b ? A5 ? AA5
Run Code Online (Sandbox Code Playgroud)
我想查询{ value_three, value_four }按组分组的对象数组value_two.value_two应该在结果中独立存在.结果应如下所示:
value_two ? value_four
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
a ? [{"value_three":"A","value_four":"AA"}, {"value_three":"A2","value_four":"AA2"}, {"value_three":"A4","value_four":"AA4"}]
b ? [{"value_three":"A3","value_four":"AA3"}, {"value_three":"A5","value_four":"AA5"}]
Run Code Online (Sandbox Code Playgroud)
它是否使用json_agg()或无关紧要array_agg().
然而,我能做的最好的事情是:
with MyCTE as ( select …Run Code Online (Sandbox Code Playgroud) postgresql ×10
datetime ×4
timezone ×3
date ×2
timestamp ×2
ajax ×1
arrays ×1
javascript ×1
jquery ×1
json ×1
plpgsql ×1
sql ×1
time-series ×1
types ×1
wcf ×1