Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1973971

Browse files
committed
Per a brief conversation with Tom, I've created a patch for adding
support for 'week' within the date_trunc function.Within the patch I added a couple of test cases and associated targetoutput, and changed the documentation to add 'week' appropriately.Robert Creager
1 parent44611f6 commit1973971

File tree

6 files changed

+35
-4
lines changed

6 files changed

+35
-4
lines changed

‎doc/src/sgml/func.sgml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.190 2004/03/04 20:09:29 dennis Exp $
2+
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.191 2004/03/05 02:41:14 momjian Exp $
33
PostgreSQL documentation
44
-->
55

@@ -5309,6 +5309,7 @@ date_trunc('<replaceable>field</replaceable>', <replaceable>source</replaceable>
53095309
<member><literal>minute</literal></member>
53105310
<member><literal>hour</literal></member>
53115311
<member><literal>day</literal></member>
5312+
<member><literal>week</literal></member>
53125313
<member><literal>month</literal></member>
53135314
<member><literal>year</literal></member>
53145315
<member><literal>decade</literal></member>

‎src/backend/utils/adt/timestamp.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.99 2004/02/14 20:16:17 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.100 2004/03/05 02:41:14 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -2564,6 +2564,13 @@ timestamp_trunc(PG_FUNCTION_ARGS)
25642564

25652565
switch (val)
25662566
{
2567+
caseDTK_WEEK:
2568+
isoweek2date(date2isoweek(tm->tm_year,tm->tm_mon,tm->tm_mday ),&(tm->tm_year),&(tm->tm_mon),&(tm->tm_mday) );
2569+
tm->tm_hour=0;
2570+
tm->tm_min=0;
2571+
tm->tm_sec=0;
2572+
fsec=0;
2573+
break;
25672574
caseDTK_MILLENNIUM:
25682575
tm->tm_year= (tm->tm_year /1000)*1000;
25692576
caseDTK_CENTURY:
@@ -2672,6 +2679,13 @@ timestamptz_trunc(PG_FUNCTION_ARGS)
26722679

26732680
switch (val)
26742681
{
2682+
caseDTK_WEEK:
2683+
isoweek2date(date2isoweek(tm->tm_year,tm->tm_mon,tm->tm_mday ),&(tm->tm_year),&(tm->tm_mon),&(tm->tm_mday) );
2684+
tm->tm_hour=0;
2685+
tm->tm_min=0;
2686+
tm->tm_sec=0;
2687+
fsec=0;
2688+
break;
26752689
caseDTK_MILLENNIUM:
26762690
tm->tm_year= (tm->tm_year /1000)*1000;
26772691
caseDTK_CENTURY:

‎src/test/regress/expected/timestamp.out

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,12 @@ SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
499499
| @ 1460 days 17 hours 32 mins 1 sec
500500
(54 rows)
501501

502+
SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc;
503+
date_trunc_week | week_trunc
504+
-----------------+--------------------------
505+
| Mon Feb 23 00:00:00 2004
506+
(1 row)
507+
502508
-- Test casting within a BETWEEN qualifier
503509
SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff
504510
FROM TIMESTAMP_TBL

‎src/test/regress/expected/timestamptz.out

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,12 @@ SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
494494
| @ 1460 days 17 hours 32 mins 1 sec
495495
(54 rows)
496496

497+
SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp with time zone '2004-02-29 15:44:17.71393' ) AS week_trunc;
498+
date_trunc_week | week_trunc
499+
-----------------+------------------------------
500+
| Mon Feb 23 00:00:00 2004 PST
501+
(1 row)
502+
497503
-- Test casting within a BETWEEN qualifier
498504
SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff
499505
FROM TIMESTAMPTZ_TBL
@@ -1317,9 +1323,9 @@ SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. H
13171323
| 2001 A.D. 2001 a.d. 2001 ad 05:32:01 P.M. 05:32:01 p.m. 05:32:01 pm
13181324
(64 rows)
13191325

1320-
SELECT '' AS to_char_10, to_char(d1, 'YYYY WW IYYY IYY IY I IW')
1326+
SELECT '' AS to_char_10, to_char(d1, 'YYYY WW IYYY IYY IY I IW')
13211327
FROM TIMESTAMPTZ_TBL;
1322-
to_char_10 | to_char
1328+
to_char_10 |to_char
13231329
------------+--------------------------
13241330
|
13251331
|

‎src/test/regress/sql/timestamp.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ SELECT '' AS "49", d1 FROM TIMESTAMP_TBL
151151
SELECT''AS"54", d1-timestamp without time zone'1997-01-02'AS diff
152152
FROM TIMESTAMP_TBLWHERE d1 BETWEEN'1902-01-01'AND'2038-01-01';
153153

154+
SELECT''AS date_trunc_week, date_trunc('week',timestamp'2004-02-29 15:44:17.71393' )AS week_trunc;
155+
154156
-- Test casting within a BETWEEN qualifier
155157
SELECT''AS"54", d1-timestamp without time zone'1997-01-02'AS diff
156158
FROM TIMESTAMP_TBL

‎src/test/regress/sql/timestamptz.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL
145145
SELECT''AS"54", d1-timestamp with time zone'1997-01-02'AS diff
146146
FROM TIMESTAMPTZ_TBLWHERE d1 BETWEEN'1902-01-01'AND'2038-01-01';
147147

148+
SELECT''AS date_trunc_week, date_trunc('week',timestamp with time zone'2004-02-29 15:44:17.71393' )AS week_trunc;
149+
148150
-- Test casting within a BETWEEN qualifier
149151
SELECT''AS"54", d1-timestamp with time zone'1997-01-02'AS diff
150152
FROM TIMESTAMPTZ_TBL

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp