Add or subtract days to date field using the field calculator

Add or subtract days to date field using the field calculator

We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

I am using ArcGIS 10.1

I'm not a programmer

I want to use the field calculator to add 4 days to the current date if the status is "delivery"


subtract 5 days if its status is "order"

this result need to have in the field of "New Date"

current date 13/11/2014

If the status is "delivery" is new date 16/11/2014

If the status is "order" new date is 09/11/2014

I noticed a few irregularities in your example: 1) your date field is actually a text field and 2) your math does not seem to be correct. The following approach should work for you:

In the Pre-Logic Script Code

def correctDate(x,y): if x == "delivery": newValue = str(int(y.split("/")[0]) + 4) a = newValue + "/" + y.split("/")[1] + "/" + y.split("/")[2] return a if x == "Order": newValue = str(int(y.split("/")[0]) - 5) b = newValue + "/" + y.split("/")[1] + "/" + y.split("/")[2] return b

In the box below that:

correctDate(!state!, !current!)

To begin with, let's see how you can quickly calculate elapsed time in Excel, i.e. find the difference between a beginning time and an ending time. And as is often the case, there is more than one formula to perform time calculations. Which one to choose depends on your dataset and exactly what result you are trying to achieve. So, let's run through all methods, one at a time.

Add and subtract time in Excel with a special tool

No muss, no fuss, only ready-made formulas for you

Easily find difference between two dates in Excel

Get the result as a ready-made formula in years, months, weeks, or days

Calculate age in Excel on the fly

And get a custom-tailored formula

Formula 1. Subtract one time from the other

As you probably know, times in Excel are usual decimal numbers formatted to look like times. And because they are numbers, you can add and subtract times just as any other numerical values.

The simplest and most obvious Excel formula to calculate time difference is this:

Depending on you data structure, the actual time difference formula may take various shapes, for example:

Formula Explanation
=A2-B2 Calculates the difference between the time values in cells A2 and B2.
=TIMEVALUE("8:30 PM") - TIMEVALUE("6:40 AM") Calculates the difference between the specified times.
=TIME(HOUR(A2), MINUTE(A2), SECOND(A2)) - TIME(HOUR(B2), MINUTE(B2), SECOND(B2)) Calculates the time difference between values in cells A2 and B2 ignoring the date difference, when the cells contain both the date and time values.

Remembering that in the internal Excel system, times are represented by fractional parts of decimal numbers, you are likely to get the results similar to this:

The decimals in column D are perfectly true but not very meaningful. To make them more informative, you can apply custom time formatting with one of the following codes:

Time code Explanation
h Elapsed hours, display as 4.
h:mm Elapsed hours and minutes, display as 4:10.
h:mm:ss Elapsed hours, minutes and seconds, display as 4:10:20.

To apply the custom time format, click Ctrl + 1 to open the Format Cells dialog, select Custom from the Category list and type the time codes in the Type box. Please see Creating a custom time format in Excel for the detailed steps.

And now, let's see how our time difference formula and time codes work in real worksheets. With Start times residing in column A and End times in column B, you can copy the following formula in columns C though E:

The elapsed time is displayed differently depending on the time format applied to the column:

Formula 2. Calculating time difference with the TEXT function

Another simple technique to calculate the duration between two times in Excel is using the TEXT function:

  • Calculate hours between two times: =TEXT(B2-A2, "h")
  • Return hours and minutes between 2 times: =TEXT(B2-A2, "h:mm")
  • Return hours, minutes and seconds between 2 times: =TEXT(B2-A2, "h:mm:ss")

  • The value returned by the TEXT function is always text. Please notice the left alignment of text values in columns C:E in the screenshot above. In certain scenarios, this might be a significant limitation because you won't be able to use the returned "text times" in other calculations.
  • If the result is a negative number, the TEXT formula returns the #VALUE! error.

Formula 3. Count hours, minutes or seconds between two times

To get the time difference in a single time unit (hours ,minutes or seconds), you can perform the following calculations.

Calculate hours between two times:

To present the difference between two times as a decimal number, use this formula:

Supposing that your start time is in A2 and end time in B2, you can use a simple equation B2-A2 to calculate the difference between two times, and then multiply it by 24, which is the number of hours in one day:

To get the number of complete hours, use the INT function to round the result down to the nearest integer:

=INT((B2-A2) * 24)

Total minutes between two times:

To calculate the minutes between two times, multiply the time difference by 1440, which is the number of minutes in one day (24 hours * 60 minutes = 1440).

As demonstrated in the following screenshot, the formula can return both positive and negative values, the latter occur when the end time is less than the start time, like in row 5:


Total seconds between times:

To get the total seconds between two times, you multiply the time difference by 86400, which is the number of seconds in one day (24 hours * 60 minutes * 60 seconds = 86400).

In our example, the formula is as follows:

=(B2-A2)* 86400

Formula 4. Calculate difference in one time unit ignoring others

To find the difference between 2 times in a certain time unit, ignoring the others, use one of the following functions.

    Difference in hours, ignoring minutes and seconds:

When using Excel's HOUR, MINUTE and SECOND functions, please remember that the result cannot exceed 24 for hours and 60 for minutes and seconds.

Formula 5. Calculate elapsed time from a start time to now

In order to calculate how much time has elapsed since the start time to now, you simply use the NOW function to return today's date and the current time, and then subtract the start date and time from it.

Supposing that the beginning date and time is in call A2, the formula =NOW()-A2 returns the following results, provided you've applied an appropriate time format to column B, h:mm in this example:

In case the elapsed time exceeds 24 hours, use one of these time formats, for example d "days" h:mm:ss like in the following screenshot:

If your starting points contain only time values without dates, you need to use the TIME function to calculate the elapsed time correctly. For example, the following formula returns the time elapsed since the time value in cell A2 up to now:


Formula 5. Display time difference as "XX days, XX hours, XX minutes and XX seconds"

This is probably the most user-friendly formula to calculate time difference in Excel. You use the HOUR, MINUTE and SECOND functions to return corresponding time units and the INT function to compute the difference in days. And then, you concatenate all these functions in a single formula along with the text labels:

=INT(B2-A2) & " days, " & HOUR(B2-A2) & " hours, " & MINUTE(B2-A2) & " minutes and " & SECOND(B2-A2) & " seconds"

To instruct your Excel time difference formula to hide zero values, embed four IF functions into it:

=IF(INT(B2-A2)>0, INT(B2-A2) & " days, ","") & IF(HOUR(B2-A2)>0, HOUR(B2-A2) & " hours, ","") & IF(MINUTE(B2-A2)>0, MINUTE(B2-A2) & " minutes and ","") & IF(SECOND(B2-A2)>0, SECOND(B2-A2) & " seconds","")

The syntax may seem excessively complicated, but it works :)

Alternatively, you can calculate time difference by simply subtracting the start time from the end time (e.g. =B2-A2 ), and then apply the following time format to the cell:

d "days," h "hours," m "minutes and" s "seconds"

An advantage of this approach is that your result would be a normal time value that you could use in other time calculations, while the result of the complex formula discussed above is a text value. A drawback is that the custom time format cannot distinguish between zero and non-zero values and ignore the latter. To display the result in other formats, please see Custom formats for time intervals over 24 hours.

Add or subtract days to date field using the field calculator - Geographic Information Systems

On-line calculators to estimate current and past values of the magnetic field.

If you want only the magnetic declination (variation) for a single day between 1900-present, visit our declination calculator.

If you want all seven magnetic field components for a single day or range of years from 1900-present, please visit our Magnetic Field Calculator. Please read the instructions below before using this calculator.

U.S. Historic Declination calculator This calculator uses the US declination models to compute declination only for the conterminous US from 1750 - present. Due to differences in data availability (recorded observations of the magnetic field), the western part of the US may not have values until the early 1800's.

Solar disturbances can cause significant differences between the estimated and actual field values. You can check the current solar conditions from NOAA's Space Weather Prediction Center.

Values are computed using the current International Geomagnetic Reference Field as adopted by the International Association of Geomagnetism and Aeronomy. Values are estimates based on the IGRF10 and are generally accurate to within 30 minutes of arc for D and I and 100-250 nT for the force elements (F, H, Z, X, and Y).

Input required is:

  1. Location (latitude and longitude), entered either in decimal degrees or degrees minutes and seconds (space separated integers).
    note: If you do not know your latitude and longitude and you live in the United States, enter your zip code in the box provided and use the "Get Location" button or the country - city select boxes on the left. Links are also provided to the U.S. Gazetteer and the Getty Thesaurus, good sources of latitude / longitude information for the U.S. and World respectively.
  2. Elevation (recommended for aircraft and satellite use) in feet, meters, or kilometers above mean sea level.
  3. Date in Year, Month, Day (form defaults to the current day). There are two date entries providing the ability to compute the magnetic field values over a range of years. Both dates default to the current day. If you want only the current field values, you do not need to enter anything else!If you want to know the magnetic field values for a range of years (i.e. from 1967 - 2017), enter the oldest date in the Start Date box and the most recent date in the End Date box.
  4. Date Step Size (used only for a range of years) is the number of years between calculations. For example, if you want to know the magnetic field values from 1967 through 2017 for every two years, enter 1967 for the Start Year, 2017 for the End Year, and 2 for the Step Size.
  5. To compute your field values, hit the Compute! button.

Results include the seven field parameters and the current rates of change for the final year:

  • Declination (D) positive east, in degrees and minutes
    Annual change (dD) positive east, in minutes per year
  • Inclination (I) positive down, in degrees and minutes
    Annual change (dI) positive down, in minutes per year
  • Horizontal Intensity (H), in nanoTesla
    Annual change (dH) in nanoTesla per year
  • North Component of H (X), positive north, in nanoTesla
    Annual change (dX) in nanoTesla per year
  • East Component of H (Y), positive east, in nanoTesla
    Annual change (dY) in nanoTesla per year
  • Vertical Intensity (Z), positive down, in nanoTesla
    Annual change (dZ) in nanoTesla per year
  • Total Field (F), in nanoTesla
    Annual change (dF) in nanoTesla per year

You can see more information on the required input or results. For more information on magnetism, adjusting your compass, computing bearings, please see our Answers to Frequently Asked Questions (FAQ) page. Go to Compute the Field Values.

Required Input

Entering location information

If you are interested in a location within the USA, you can enter your postal zip code in the space provided and press the "Get Location" button. The latitude and longitude for that postal zip code (as stored in the U.S. Census Bureau), will automatically be populated in the location area. If no value appears, it is likely there was a problem obtaining a location for the zip code entered. In this case, please enter the latitude and longitude directly in the boxes provided.

If you are entering the location in degrees, minutes, and seconds, please enter values for all three - separated by spaces - even if the value is zero. For example, if your location is at latitude 35° 30' 0", enter 35 30 0. Remember, there are 60 seconds in a minute and 60 minutes in a degree, therefore 35° 30' 0" is equivalent to 35.500 Do not enter the N, S, E, or W designation in the box! Instead, please be sure the proper selection to the right of the box is checked for your location. N stands for northern hemisphere latitude, S for southern hemisphere latitude, W for western hemisphere longitude, E for eastern hemisphere longitude. The USA is (mostly) located in the northern (N) and western (W) hemisphere.

Latitude ranges from 90° south (south pole) to 90° north (north pole) with 0° meaning the equator. Longitude ranges from 0° (Greenwich, England) eastward through 90° East (Bangladesh) to 180 degrees and westward across the Atlantic to 90° West (Jackson, MI) to 180 degrees west. For example, the location of Louisville, KY USA is 38.2247° N, 85.7412° W also expressed as 38° 13' 29" N, 85° 44' 28" W.

Entering date information

There are two date entries providing the ability to compute the magnetic field values over a range of years. If you want a range of dates, enter your oldest date in the "Start Date " field, your most recent date in the "End Date" field, and enter the number of years between computations in the "Date Step Size" field. For example, if you want to know the magnetic field values from 1900 through 2017 at 3 year intervals, enter 1900 1 1 for the start date, 2017 1 1 for the end date, and 3 for the step size. The end date must be greater than or equal to the start date. Do not enter a step size (default is zero) if you are not computing a range of years.

The IGRF magnetic field model is updated every 5 years to enable forward computing of the magnetic field. For example, the IGRF12 adopted in 2005 was valid through January 1 2020. If you enter an end date beyond the valid period of the model, you will get an error message requesting you to enter a valid date.

Entering elevation

Elevation is especially important when computing the magnetic field at aircraft or higher altitudes. If you are unsure of your elevation, and are interested in a location on the surface of Earth, the default of 0 is sufficient. Please enter the elevation in either Kilometers (-1 to 600)

Click on the "Compute" button when ready.

Area Input

To compute the field values for an area, please enter the northern most and southern most latitude, the step size for latitude, the western most and eastern most longitudes and the step size for longitude. For example, if you are interested in declination grid for the conterminous U.S. with values computed every 5 degrees of latitude and longitude, you would enter (click on example for larger image):

Reading the results

The magnetic parameters declination, inclination, horizontal component, north component, east component, vertical component, and total field (D, I, H, X, Y, Z, and F) are computed based on the latest International Geomagnetic Reference Field (IGRF) model of the Earth's main magnetic field. Accuracies for the angular components (Declination, D and Inclination, I) are reported in degrees and minutes of arc and are generally within 30 minutes. Accuracies for the force components (Horizontal - H, North - X, East - Y, Vertical - Z, and Total force - F) are generally within 100 to 250 nanotesla. Local disturbances and attempting to use a model beyond its valid date range could cause greater errors. Before using the IGRF please look at the 'Health Warning'. The sign convention used throughout is Declination (D) positive east, Inclination (I) and Vertical intensity (Z) positive down, North component (X) positive north, and East component (Y) positive east. The Horizontal (H) and Total (F) intensities are always positive. For more information on Earth's magnetic field parameters, see our Frequently Asked Questions.

9.9.2. date_trunc

The function date_trunc is conceptually similar to the trunc function for numbers.

source is a value expression of type timestamp or interval. (Values of type date and time are cast automatically to timestamp or interval, respectively.) field selects to which precision to truncate the input value. The return value is of type timestamp or interval with all fields that are less significant than the selected one set to zero (or one, for day and month).

Valid values for field are:


Why does it (not) change when I re-open the document?

This page last revised: Thursday, April 01, 2021 . For Versions of Word 97-2019 (365).

The easy (but probably wrong) way to put a date in your document is Insert --> Date and Time.

If you don't check "Update Automatically" it is the same as typing the date yourself (except harder). If you do check "Update Automatically" it will update when you print (if you have the setting under printer options as "Update Fields" which is the default). So, if you use the document on a future date, it will be different. You can manually force an update by putting your insertion point in the date and pressing the [F9] key.

If you want to put a date in a template that updates to the current date when a document is created based on the template, or want to change the format or do other things with the date field, you want to use Insert --> Field --> Date and Time instead. Using the options here, you can either pick a format or type your own characters (called a picture) for the format. The options for the type of date include:

<DATE > - The date you are looking at the document. Always today (although it may not show on screen as today until you update the field).

<CREATEDATE > - The date the document was created (or saved using Save As). When used in a template, it will update in a new document based on the template, to the date the document is created.

<PRINTDATE > - The date the document was last printed.

< SAVEDATE > - The date the document was last saved.

<TIME > - Essentially the same as the DATE field. When used without a "picture" it will give you the current time. With a "picture" it gives the same information as the DATE field.

Note that the braces <> for these, like all field codes, cannot simply be typed. If you want to type a field, you have to use Ctrl + F9 to insert the braces. You can type the field and switches, select what you typed and press Ctrl + F9 to make it a field, or you can insert the braces and then type between them.

The above are the field codes that will be inserted for you using Insert --> Field --> Date and Time without using any options. If you choose options, they can include the following "pictures:"

Add or subtract days to date field using the field calculator - Geographic Information Systems

Table 9.30 shows the available functions for date/time value processing, with details appearing in the following subsections. Table 9.29 illustrates the behaviors of the basic arithmetic operators ( + , * , etc.). For formatting functions, refer to Section 9.8. You should be familiar with the background information on date/time data types from Section 8.5.

In addition, the usual comparison operators shown in Table 9.1 are available for the date/time types. Dates and timestamps (with or without time zone) are all comparable, while times (with or without time zone) and intervals can only be compared to other values of the same data type. When comparing a timestamp without time zone to a timestamp with time zone, the former value is assumed to be given in the time zone specified by the TimeZone configuration parameter, and is rotated to UTC for comparison to the latter value (which is already in UTC internally). Similarly, a date value is assumed to represent midnight in the TimeZone zone when comparing it to a timestamp.

All the functions and operators described below that take time or timestamp inputs actually come in two variants: one that takes time with time zone or timestamp with time zone , and one that takes time without time zone or timestamp without time zone . For brevity, these variants are not shown separately. Also, the + and * operators come in commutative pairs (for example both date + integer and integer + date ) we show only one of each such pair.

Table 9.29. Date/Time Operators

Operator Example Result
+ date '2001-09-28' + integer '7' date '2001-10-05'
+ date '2001-09-28' + interval '1 hour' timestamp '2001-09-28 01:00:00'
+ date '2001-09-28' + time '03:00' timestamp '2001-09-28 03:00:00'
+ interval '1 day' + interval '1 hour' interval '1 day 01:00:00'
+ timestamp '2001-09-28 01:00' + interval '23 hours' timestamp '2001-09-29 00:00:00'
+ time '01:00' + interval '3 hours' time '04:00:00'
- - interval '23 hours' interval '-23:00:00'
- date '2001-10-01' - date '2001-09-28' integer '3' (days)
- date '2001-10-01' - integer '7' date '2001-09-24'
- date '2001-09-28' - interval '1 hour' timestamp '2001-09-27 23:00:00'
- time '05:00' - time '03:00' interval '02:00:00'
- time '05:00' - interval '2 hours' time '03:00:00'
- timestamp '2001-09-28 23:00' - interval '23 hours' timestamp '2001-09-28 00:00:00'
- interval '1 day' - interval '1 hour' interval '1 day -01:00:00'
- timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' interval '1 day 15:00:00'
* 900 * interval '1 second' interval '00:15:00'
* 21 * interval '1 day' interval '21 days'
* double precision '3.5' * interval '1 hour' interval '03:30:00'
/ interval '1 hour' / double precision '1.5' interval '00:40:00'

Table 9.30. Date/Time Functions

Function Return Type Description Example Result
age( timestamp , timestamp ) interval Subtract arguments, producing a “ symbolic ” result that uses years and months, rather than just days age(timestamp '2001-04-10', timestamp '1957-06-13') 43 years 9 mons 27 days
age( timestamp ) interval Subtract from current_date (at midnight) age(timestamp '1957-06-13') 43 years 8 mons 3 days
clock_timestamp() timestamp with time zone Current date and time (changes during statement execution) see Section 9.9.4
current_date date Current date see Section 9.9.4
current_time time with time zone Current time of day see Section 9.9.4
current_timestamp timestamp with time zone Current date and time (start of current transaction) see Section 9.9.4
date_part( text , timestamp ) double precision Get subfield (equivalent to extract ) see Section 9.9.1 date_part('hour', timestamp '2001-02-16 20:38:40') 20
date_part( text , interval ) double precision Get subfield (equivalent to extract ) see Section 9.9.1 date_part('month', interval '2 years 3 months') 3
date_trunc( text , timestamp ) timestamp Truncate to specified precision see also Section 9.9.2 date_trunc('hour', timestamp '2001-02-16 20:38:40') 2001-02-16 20:00:00
date_trunc( text , interval ) interval Truncate to specified precision see also Section 9.9.2 date_trunc('hour', interval '2 days 3 hours 40 minutes') 2 days 03:00:00
extract ( field from timestamp ) double precision Get subfield see Section 9.9.1 extract(hour from timestamp '2001-02-16 20:38:40') 20
extract ( field from interval ) double precision Get subfield see Section 9.9.1 extract(month from interval '2 years 3 months') 3
isfinite( date ) boolean Test for finite date (not +/-infinity) isfinite(date '2001-02-16') true
isfinite( timestamp ) boolean Test for finite time stamp (not +/-infinity) isfinite(timestamp '2001-02-16 21:28:30') true
isfinite( interval ) boolean Test for finite interval isfinite(interval '4 hours') true
justify_days( interval ) interval Adjust interval so 30-day time periods are represented as months justify_days(interval '35 days') 1 mon 5 days
justify_hours( interval ) interval Adjust interval so 24-hour time periods are represented as days justify_hours(interval '27 hours') 1 day 03:00:00
justify_interval( interval ) interval Adjust interval using justify_days and justify_hours , with additional sign adjustments justify_interval(interval '1 mon -1 hour') 29 days 23:00:00
localtime time Current time of day see Section 9.9.4
localtimestamp timestamp Current date and time (start of current transaction) see Section 9.9.4
make_date( year int , month int , day int ) date Create date from year, month and day fields make_date(2013, 7, 15) 2013-07-15
make_interval( years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0) interval Create interval from years, months, weeks, days, hours, minutes and seconds fields make_interval(days => 10) 10 days
make_time( hour int , min int , sec double precision ) time Create time from hour, minute and seconds fields make_time(8, 15, 23.5) 08:15:23.5
make_timestamp( year int , month int , day int , hour int , min int , sec double precision ) timestamp Create timestamp from year, month, day, hour, minute and seconds fields make_timestamp(2013, 7, 15, 8, 15, 23.5) 2013-07-15 08:15:23.5
make_timestamptz( year int , month int , day int , hour int , min int , sec double precision , [ timezone text ]) timestamp with time zone Create timestamp with time zone from year, month, day, hour, minute and seconds fields if timezone is not specified, the current time zone is used make_timestamptz(2013, 7, 15, 8, 15, 23.5) 2013-07-15 08:15:23.5+01
now() timestamp with time zone Current date and time (start of current transaction) see Section 9.9.4
statement_timestamp() timestamp with time zone Current date and time (start of current statement) see Section 9.9.4
timeofday() text Current date and time (like clock_timestamp , but as a text string) see Section 9.9.4
transaction_timestamp() timestamp with time zone Current date and time (start of current transaction) see Section 9.9.4
to_timestamp( double precision ) timestamp with time zone Convert Unix epoch (seconds since 1970-01-01 00:00:00+00) to timestamp to_timestamp(1284352323) 2010-09-13 04:32:03+00

In addition to these functions, the SQL OVERLAPS operator is supported:

This expression yields true when two time periods (defined by their endpoints) overlap, false when they do not overlap. The endpoints can be specified as pairs of dates, times, or time stamps or as a date, time, or time stamp followed by an interval. When a pair of values is provided, either the start or the end can be written first OVERLAPS automatically takes the earlier value of the pair as the start. Each time period is considered to represent the half-open interval start <= time < end , unless start and end are equal in which case it represents that single time instant. This means for instance that two time periods with only an endpoint in common do not overlap.

When adding an interval value to (or subtracting an interval value from) a timestamp with time zone value, the days component advances or decrements the date of the timestamp with time zone by the indicated number of days, keeping the time of day the same. Across daylight saving time changes (when the session time zone is set to a time zone that recognizes DST), this means interval '1 day' does not necessarily equal interval '24 hours' . For example, with the session time zone set to America/Denver :

This happens because an hour was skipped due to a change in daylight saving time at 2005-04-03 02:00:00 in time zone America/Denver .

Note there can be ambiguity in the months field returned by age because different months have different numbers of days. PostgreSQL 's approach uses the month from the earlier of the two dates when calculating partial months. For example, age('2004-06-01', '2004-04-30') uses April to yield 1 mon 1 day , while using May would yield 1 mon 2 days because May has 31 days, while April has only 30.

Subtraction of dates and timestamps can also be complex. One conceptually simple way to perform subtraction is to convert each value to a number of seconds using EXTRACT(EPOCH FROM . ) , then subtract the results this produces the number of seconds between the two values. This will adjust for the number of days in each month, timezone changes, and daylight saving time adjustments. Subtraction of date or timestamp values with the “ - ” operator returns the number of days (24-hours) and hours/minutes/seconds between the values, making the same adjustments. The age function returns years, months, days, and hours/minutes/seconds, performing field-by-field subtraction and then adjusting for negative field values. The following queries illustrate the differences in these approaches. The sample results were produced with timezone = 'US/Eastern' there is a daylight saving time change between the two dates used:

9.9.1. EXTRACT , date_part

The extract function retrieves subfields such as year or hour from date/time values. source must be a value expression of type timestamp , time , or interval . (Expressions of type date are cast to timestamp and can therefore be used as well.) field is an identifier or string that selects what field to extract from the source value. The extract function returns values of type double precision . The following are valid field names:

The first century starts at 0001-01-01 00:00:00 AD, although they did not know it at the time. This definition applies to all Gregorian calendar countries. There is no century number 0, you go from -1 century to 1 century. If you disagree with this, please write your complaint to: Pope, Cathedral Saint-Peter of Roma, Vatican.

For timestamp values, the day (of the month) field (1 - 31) for interval values, the number of days

The year field divided by 10

The day of the week as Sunday ( 0 ) to Saturday ( 6 )

Note that extract 's day of the week numbering differs from that of the to_char(. 'D') function.

The day of the year (1 - 365/366)

For timestamp with time zone values, the number of seconds since 1970-01-01 00:00:00 UTC (negative for timestamps before that) for date and timestamp values, the nominal number of seconds since 1970-01-01 00:00:00, without regard to timezone or daylight-savings rules for interval values, the total number of seconds in the interval

You can convert an epoch value back to a timestamp with time zone with to_timestamp :

Beware that applying to_timestamp to an epoch extracted from a date or timestamp value could produce a misleading result: the result will effectively assume that the original value had been given in UTC, which might not be the case.

The day of the week as Monday ( 1 ) to Sunday ( 7 )

This is identical to dow except for Sunday. This matches the ISO 8601 day of the week numbering.

This field is not available in PostgreSQL releases prior to 8.3.

The Julian Date corresponding to the date or timestamp (not applicable to intervals). Timestamps that are not local midnight result in a fractional value. See Section B.7 for more information.

The seconds field, including fractional parts, multiplied by 1 000 000 note that this includes full seconds

Years in the 1900s are in the second millennium. The third millennium started January 1, 2001.

The seconds field, including fractional parts, multiplied by 1000. Note that this includes full seconds.

For timestamp values, the number of the month within the year (1 - 12) for interval values, the number of months, modulo 12 (0 - 11)

The quarter of the year (1 - 4) that the date is in

The seconds field, including fractional parts (0 - 59 [7] )

The time zone offset from UTC, measured in seconds. Positive values correspond to time zones east of UTC, negative values to zones west of UTC. (Technically, PostgreSQL does not use UTC because leap seconds are not handled.)

The hour component of the time zone offset

The minute component of the time zone offset

In the ISO week-numbering system, it is possible for early-January dates to be part of the 52nd or 53rd week of the previous year, and for late-December dates to be part of the first week of the next year. For example, 2005-01-01 is part of the 53rd week of year 2004, and 2006-01-01 is part of the 52nd week of year 2005, while 2012-12-31 is part of the first week of 2013. It's recommended to use the isoyear field together with week to get consistent results.

The year field. Keep in mind there is no 0 AD , so subtracting BC years from AD years should be done with care.

When the input value is +/-Infinity, extract returns +/-Infinity for monotonically-increasing fields ( epoch , julian , year , isoyear , decade , century , and millennium ). For other fields, NULL is returned. PostgreSQL versions before 9.6 returned zero for all cases of infinite input.

The extract function is primarily intended for computational processing. For formatting date/time values for display, see Section 9.8.

The date_part function is modeled on the traditional Ingres equivalent to the SQL -standard function extract :

Note that here the field parameter needs to be a string value, not a name. The valid field names for date_part are the same as for extract .

9.9.2. date_trunc

The function date_trunc is conceptually similar to the trunc function for numbers.

source is a value expression of type timestamp or interval . (Values of type date and time are cast automatically to timestamp or interval , respectively.) field selects to which precision to truncate the input value. The return value is of type timestamp or interval with all fields that are less significant than the selected one set to zero (or one, for day and month).

Valid values for field are:



The AT TIME ZONE converts time stamp without time zone to/from time stamp with time zone , and time values to different time zones. Table 9.31 shows its variants.

Table 9.31. AT TIME ZONE Variants

Expression Return Type Description
timestamp without time zone AT TIME ZONE zone timestamp with time zone Treat given time stamp without time zone as located in the specified time zone
timestamp with time zone AT TIME ZONE zone timestamp without time zone Convert given time stamp with time zone to the new time zone, with no time zone designation
time with time zone AT TIME ZONE zone time with time zone Convert given time with time zone to the new time zone

In these expressions, the desired time zone zone can be specified either as a text string (e.g., 'America/Los_Angeles' ) or as an interval (e.g., INTERVAL '-08:00' ). In the text case, a time zone name can be specified in any of the ways described in Section 8.5.3.

Examples (assuming the local time zone is America/Los_Angeles ):

The first example adds a time zone to a value that lacks it, and displays the value using the current TimeZone setting. The second example shifts the time stamp with time zone value to the specified time zone, and returns the value without a time zone. This allows storage and display of values different from the current TimeZone setting. The third example converts Tokyo time to Chicago time. Converting time values to other time zones uses the currently active time zone rules since no date is supplied.

The function timezone ( zone , timestamp ) is equivalent to the SQL-conforming construct timestamp AT TIME ZONE zone .

9.9.4. Current Date/Time

PostgreSQL provides a number of functions that return values related to the current date and time. These SQL-standard functions all return values based on the start time of the current transaction:

CURRENT_TIME and CURRENT_TIMESTAMP deliver values with time zone LOCALTIME and LOCALTIMESTAMP deliver values without time zone.

CURRENT_TIME , CURRENT_TIMESTAMP , LOCALTIME , and LOCALTIMESTAMP can optionally take a precision parameter, which causes the result to be rounded to that many fractional digits in the seconds field. Without a precision parameter, the result is given to the full available precision.

Since these functions return the start time of the current transaction, their values do not change during the transaction. This is considered a feature: the intent is to allow a single transaction to have a consistent notion of the “ current ” time, so that multiple modifications within the same transaction bear the same time stamp.

Other database systems might advance these values more frequently.

PostgreSQL also provides functions that return the start time of the current statement, as well as the actual current time at the instant the function is called. The complete list of non-SQL-standard time functions is:

transaction_timestamp() is equivalent to CURRENT_TIMESTAMP , but is named to clearly reflect what it returns. statement_timestamp() returns the start time of the current statement (more specifically, the time of receipt of the latest command message from the client). statement_timestamp() and transaction_timestamp() return the same value during the first command of a transaction, but might differ during subsequent commands. clock_timestamp() returns the actual current time, and therefore its value changes even within a single SQL command. timeofday() is a historical PostgreSQL function. Like clock_timestamp() , it returns the actual current time, but as a formatted text string rather than a timestamp with time zone value. now() is a traditional PostgreSQL equivalent to transaction_timestamp() .

All the date/time data types also accept the special literal value now to specify the current date and time (again, interpreted as the transaction start time). Thus, the following three all return the same result:

Do not use the third form when specifying a value to be evaluated later, for example in a DEFAULT clause for a table column. The system will convert now to a timestamp as soon as the constant is parsed, so that when the default value is needed, the time of the table creation would be used! The first two forms will not be evaluated until the default value is used, because they are function calls. Thus they will give the desired behavior of defaulting to the time of row insertion. (See also Section

9.9.5. Delaying Execution

The following functions are available to delay execution of the server process:

pg_sleep makes the current session's process sleep until seconds seconds have elapsed. seconds is a value of type double precision , so fractional-second delays can be specified. pg_sleep_for is a convenience function for larger sleep times specified as an interval . pg_sleep_until is a convenience function for when a specific wake-up time is desired. For example:

The effective resolution of the sleep interval is platform-specific 0.01 seconds is a common value. The sleep delay will be at least as long as specified. It might be longer depending on factors such as server load. In particular, pg_sleep_until is not guaranteed to wake up exactly at the specified time, but it will not wake up any earlier.


Make sure that your session does not hold more locks than necessary when calling pg_sleep or its variants. Otherwise other sessions might have to wait for your sleeping process, slowing down the entire system.

[7] 60 if leap seconds are implemented by the operating system

9.9.2. date_trunc

The function date_trunc is conceptually similar to the trunc function for numbers.

source is a value expression of type timestamp or interval. (Values of type date and time are cast automatically, to timestamp or interval respectively.) field selects to which precision to truncate the input value. The return value is of type timestamp or interval with all fields that are less significant than the selected one set to zero (or one, for day and month).

Valid values for field are:


Add or subtract days to date field using the field calculator - Geographic Information Systems

Calculate Sunrise and Sunset based on time and latitude and longitude

This is a modification of the sunrise.c posted by Mike Chirico back in 2004. See the link below to find it. I needed an algorithm that could tell me when it was dark out for all intents and purposes. I found Mike’s code, and modified it a bit to be a library that can be used again and again.

Since then, I have updated it a bit to do some more work. It will calculate the Moon position generically. Since version 1.1.0, it will also calculate other sunrise/sunset times depending on your needs.

  • Can accurately calculate Standard Sunrise and Sunset
  • Can accurately calculate Nautical Sunrise and Sunset
  • Can accurately calculate Civil Sunrise and Sunset
  • Can accurately calculate Astronomical Sunrise and Sunset

Version 1.1.1 IMPORTANT changes

I have migrated to an all lower case file name structure. Starting with master and 1.1.1, you must use

Instead of SunSet.h in the previous versions. This change was originally caused by the changes to the Particle build system where I use this library extensively. They forced me to name the file the same as the package name which resulted in an upper and lower case name. Now it's all lower case, pry the way I should have started it.

I've also change the google test enable variable, though I'm not sure many used that. I've updated the readme below to reflect the change.

This is governed by the GPL2 license. See the License terms in the LICENSE file. Use it as you want, make changes as you want, but please contribute back in accordance with the GPL.

Building for any cmake target

The builder requires CMake 3.0.0 or newer, which should be available in most Linux distributions.

Note that by default, the installer will attempt to install to /usr/local/include and /usr/local/lib or the equivalent for Windows.

Building with Google Test for library verification

You can use google test by doing the following

This should work on any platform that supports C++ 14 and later. There is a hard requirement on 32 bit systems at a minimum due to needing full 32 bit integers for some of the work.

I have used this library on the following systems successfully, and test it on a Raspberry PI. It really does require a 32 bit system at a minimum, and due to the math needs, a 32 bit processor that has native floating point support is best. This does mean that the original Arudino and other similar 8 bit micros cannot use this library correctly.

  • Raspberry PI
  • Omega Onion
  • Teensy with GPS
  • SAMD targets using PIO/VSCode

I have used the following build systems with this library as well

  • Raspberry PI command line
  • Onion cross compiled using KDevelop and Eclipse
  • Arudino IDE (must be for 32 bit micros)
  • VS Code for Particle

I don't use PlatformIO for much but some compile time testing. I can't help much with that platform.

See notes below for the ESP devices, ESP32 and ESP8266.

I primarily use google test to validate the code running under Linux. This is done with the cmake config test above. I also run a small ino on a Particle Photon to prove that it works against a micro as well. Test results can be found for the latest release on the release page.

To use SunSet, you need to a few bits of local information.

  1. Accurate time. If you’re running this with something that can get GPS time or use NTP, then results will always be very accurate. If you do not have a good clock source, then the results are going to be very accurate relative to your not so accurate clock. For best results, make sure your clock is accurate to within a second if possible. Note that you also need an accurate timezone as the calculation is to UTC, and then the timezone is applied before the value is returned. If your results seem off by some set number of hours, a bad or missing timezone is probably why.
  2. You need an accurate position, both latitude and longitude, which the library needs to provide accurate timing. Note that it does rely on positive or negative longitude, so you are at -100 longitude, but put 100 longitude in, you will get invalid results.
  3. To get accurate results for your location, you need both the Latitude and Longitude, AND a local timezone.
    • All math is done without a timezone, (timezone = 0). Therefore, to make sure you get accurate results for your location, you must set a local timezone for the LAT and LON you are using. You can tell if you made a mistake when the result you get is negative for sunrise.
  4. Prior to calculating sunrise or sunset, you must update the current date for the library, including the required timezone. The library doesn’t track the date, so calling it every day without changing the date means you will always get the calculation for the last accurate date you gave it. If you do not set the date, it defaults to midnight, January 1st of year 0 in the Gregorian calendar.
  5. Since all calculations are done in UTC, it is possible to know what time sunrise is in your location without a timezone. Call calcSunriseUTC for this detail.
    • This isn't very useful in the long run, so the UTC functions will be deprecated. The new civil, astro, and nautical API's do not include the UTC analog. This is by design.
  6. The library returns a double that indicates how many minutes past midnight relative to the set date that sunrise or sunset will happen. If the sun will rise at 6am local to the set location and date, then you will get a return value of 360.0. Decimal points indicate fractions of a minute.
    • Note that the library may return 359.89 for a 6 AM result. Doubles don't map to times very well, so the actual return value IS correct, but should be rounded up if so desired to match other calculators.
  7. The library may return NaN or 0 for instances where there is no real sunrise or sunset value (above the arctic circle in summer as an example). The differences seem to be compiler and platform related, and is not something I am currently doing something about. Correctly checking for return value is a critical need and not ignoring 0 or NaN will make this library work better for you in the long run.
    • This library does some pretty intensive math, so devices without an FPU are going to run slower because of it. As of version 1.1.3, this library does work for the ESP8266, but this is not an indication that it will run on all non FPU enabled devices.
  8. This library has a hard requirement on 32 bit precision for the device you are using. 8 or 16 bit micros are not supported.

The example below gives some hints for using the library, it's pretty simple. Every time you need the calculation, call for it. I wouldn't suggest caching the value unless you can handle changes in date so the calculation is correct relative to a date you need.

SunSet is C++, no C implementation is provided. It is compiled using C++14, and any code using it should use C++14 as well as there is a dependency on C++14 at a minimum. Newer C++ versions work as well.

  • 1.1.6 Fixing issues with library version numbering
  • 1.1.5 Bug fixes
    • Issue #26 - Code quality issue in function calcGeomMeanLongSun?
    • Issue #28 - Add option to override cmake build settings via variables
    • Issue #29 - Fix warning for platforms that cannot build shared objects
    • Issue #31 - Member functions that should be const aren't
    • Issue #32 - Expose calcAbsSunset style interface, so custom offsets can be used
    • Issue #33 - Remove unnecessary define statements
    • Issue #34 - Fix missing precision cast in calcJD
    • Issue #37 - typo in examples/esp/example.ino
    • New API's for the new functionality. See the code for details.
    • Begin to deprecate UTC functions. These will not be removed until later if ever. They are not tested as well.
    • Migrate timezone to be a double for fractional timezones. IST for example works correctly now.

    This library also allows you to calculate the moon phase for the current day to an integer value. This means it's not perfectly accurate, but it's pretty close. To use it, you call moonPhase() with an integer value that is the number of seconds from the January 1, 1970 epoch. It will do some simple math and return an integer value that represents the current phase of the moon, from 0 to 29. In this case, 0 is new, and 29 is new, 15 is full. The code handles times that may cause the calculation to return 30 to avoid some limits confusion (there aren't 30 days in the lunar cycle, but it's close enough that some time values will cause it to return 30 anyway).

    This example is relative to an .ino file. Create a global object, initialize it and use it in loop().

    This example is for the Raspberry Pi using C++

    • This is a general purpose calculator, so you could calculate when Sunrise was on the day Shakespeare died. Hence some of the design decisions.
    • Date values are absolute, are not zero based, and should not be abbreviated. (e.g. don’t use 15 for 2015 or 0 for January)
    • This library has a hard requirement on a 32 bit micro with native hard float. Soft float micros do work, but may have issues. The math is pretty intensive.
    • It is important to remember you MUST have accurate date and time. The calculations are time sensitive, and if you aren't accurate, the results will be obvious. Note that the library does not use hours, minutes, or seconds, just the date, so syncing time a lot won't help, just making sure it's accurate at midnight so you can set the date before calling the calc functions. Knowing when to update the timzone for savings time if applicaple is also pretty important.
    • It can be used as a general purpose library on any Linux machine, as well as on an Arduino or Particle Photon. You just need to compile it into your RPI or Beagle project using cmake 3.0 or later.
    • UTC is not the UTC sunrise time, it is the time in Greenwhich when the sun would rise at the location specified to the library. It's weird, but allows for some flexibility when doing calcualations depending on how you keep track of time in your system. The UTC specific calls are being deprecated starting with 1.1.0.
    • Use of Civil, Nautical, and Astronomical values are interesting for lots of new uses of the library. They are added as a convenience, but hopefully will prove useful. These functions do not have equal UTC functions.
    • I do not build or test on a Windows target. I don't have a Windows machine to do so. I do test this on a Mac, but only lightly and not every release right now.

    The popular ESP devices seem to have some inconsistencies. While it is possible to run on the 8266, which has no FPU but is 32bit, the math is slow, and if you are doing time constrained activities, there is no specific guarantee that this library will work for you. Testing shows it does work well enough, but use it at your own risk.

    Using this library with an ESP8266 is not considered a valid or tested combination, though it may work for you. I will not attempt to support any issues raised against the 8266 that can't be duplicated on an ESP32.

    The ESP32 also has some FPU issues, though testing confirms it works very well and does not slow the system in any measurable way.

    The conclusions in the links seem to indicate that a lot of the math used by this library may be slow on the ESP8266 processors. However, slow in this case is still milliseconds, so it may not matter on the 8266 at all. Your mileage might vary.

    I got the moon work from Ben Daglish at

    The following contributors have helped me identify issues and add features. The individuals are listed in no particular order.

    Office solution: Clearing up that wacky date problem when copying sheets

    This week, learn the solution to the last Office challenge: Why does Excel change dates when I copy a sheet to a new workbook?

    />In our last challenge, Why does Excel change dates when I copy a sheet to a new workbook, I presented a rare date problem. Sometimes, when you copy a sheet to a new workbook, Excel changes the date. It isn't a bug you're dealing with two different date systems.

    By default, Excel workbooks use the 1900 date system. The first supported day is January 1, 1900. When you enter a date value, Excel converts that date into a serial number that represents the number of elapsed days since January 1, 1900. It's my understanding that this system was originally adopted to be compatible with Lotus 1-2-3.

    In contrast, the first day supported in the 1904 system is January 1, 1904. When you enter a date, Excel converts it into a serial number that represents the number of elapsed days since January 1, 1904. This gets into the leap year issue that TechRepublic member Paul mentioned.

    The difference between the two systems, and consequently, their serial numbers is 1,462 days. 1900 serial numbers are always 1,462 days larger than the 1904 system's.

    Each workbook can support either date (but not both at the same date). To set the system, do the following:

    1. Click the File tab and choose Options. In Excel 2007, click the Office button, and click Excel Options. In Excel 2003, choose Options from the Tools menu.
    2. In the left pane, choose Advanced. In Excel 2003, click the Calculation tab.
    3. In the When Calculating This Workbook section, check the Use 1904 Date option, to change this setting. In Excel 2003, click the 1904 Date System option.
    4. Click OK.

    When you copy data between two workbooks that use different systems, you'll run into shifting dates. The easiest way to adjust the dates is to use the Paste Special option to add or subtract 1,462 to each date:

    When you create a table in BigQuery, the table name must be unique per dataset. The table name can:

    • Contain up to 1,024 characters.
    • Contain Unicode characters in category L (letter), M (mark), N (number), Pc (connector, including underscore), Pd (dash), Zs (space). For more information, see General Category.

    For example, the following are all valid table names: table-01 , ग्राहक , 00_お客様 , étudiant .

    Some table names and table name prefixes are reserved. If you receive an error saying that your table name or prefix is reserved, then select a different name and try again.

    Required permissions

    At a minimum, to create a table, you must be granted the following permissions:

    • bigquery.tables.create permissions to create the table
    • bigquery.tables.updateData to write data to the table by using a load job, a query job, or a copy job
    • to run a query job, load job, or copy job that writes data to the table

    Additional permissions such as bigquery.tables.getData might be required to access the data you're writing to the table.

    The following predefined IAM roles include both bigquery.tables.create and bigquery.tables.updateData permissions:

    The following predefined IAM roles include permissions:

    In addition, if a user has bigquery.datasets.create permissions, when that user creates a dataset, they are granted bigquery.dataOwner access to it. bigquery.dataOwner access gives the user the ability to create and update tables in the dataset.

    For more information on IAM roles and permissions in BigQuery, see Predefined roles and permissions.

    Creating an empty clustered table with a schema definition

    You specify clustering columns when you create a table in BigQuery. After the table is created, you can modify the clustering columns see Modifying clustering specification for details.

    Clustering columns must be top-level, non-repeated columns, and they must be one of the following simple data types:

    • DATE
    • STRING

    You can specify up to four clustering columns. When you specify multiple columns, the order of the columns determines how the data is sorted. For example, if the table is clustered by columns a, b and c, the data is sorted in the same order: first by column a, then by column b, and then by column c. As a best practice, place the most frequently filtered or aggregated column first.

    The order of your clustering columns also affects query performance and pricing. For more information about query best practices for clustered tables, see Querying clustered tables.

    To create an empty clustered table with a schema definition:


    In the Google Cloud Console, go to the BigQuery page.

    In the Explorer panel, expand your project and select a dataset.

    Expand the more_vert Actions option and click Open.

    In the details panel, click Create table add_box .

    On the Create table page, under Source, for Create table from, select Empty table.

    Under Destination:

    • For Dataset name, choose the appropriate dataset, and in the Table name field, enter the name of the table you're creating.
    • Verify that Table type is set to Native table.

    Under Schema, enter the schema definition.

    Enter schema information manually by:

    Enabling Edit as text and entering the table schema as a JSON array.

    Using Add field to manually input the schema.

    (Optional) Under Partition and cluster settings, select Partition by field and choose the DATE or TIMESTAMP column. This option is not available if the schema does not contain a DATE or TIMESTAMP column.

    To create an ingestion-time partitioned table, select Partition by ingestion time.

    (Optional) For Partitioning filter, click the Require partition filter checkbox to require users to include a WHERE clause that specifies the partitions to query. Requiring a partition filter can reduce cost and improve performance. For more information, see Querying partitioned tables.

    For Clustering order, enter between one and four comma-separated column names.

    (Optional) Click Advanced options and for Encryption, click Customer-managed key to use a Cloud Key Management Service key. If you leave the Google-managed key setting, BigQuery encrypts the data at rest.

    Click Create table.

    After the table is created, you can update the partitioned table's table expiration, description, and labels. You cannot use the Cloud Console to add a partition expiration after a table is created.

    Use the bq mk command with the following flags:

    • --table (or the -t shortcut).
    • --schema . You can supply the table's schema definition inline or use a JSON schema file.
    • --clustering_fields . You can specify up to four clustering columns.

    Optional parameters include --expiration , --description , --time_partitioning_type , --time_partitioning_field , --time_partitioning_expiration , --destination_kms_key , and --label .

    If you are creating a table in a project other than your default project, add the project ID to the dataset in the following format: project_id:dataset .

    --destination_kms_key is not demonstrated here. For information about using --destination_kms_key , see customer-managed encryption keys.

    Enter the following command to create an empty clustered table with a schema definition:

    • INTEGER1 : the default lifetime, in seconds, for the table. The minimum value is 3,600 seconds (one hour). The expiration time evaluates to the current UTC time plus the integer value. If you set the table's expiration time when you create a time-partitioned table, the dataset's default table expiration setting is ignored. Setting this value deletes the table and all partitions after the specified time.
    • SCHEMA : an inline schema definition in the format COLUMN:DATA_TYPE,COLUMN:DATA_TYPE or the path to the JSON schema file on your local machine.
    • PARTITION_COLUMN : the name of the TIMESTAMP or DATE column used to create a partitioned table. If you create a partitioned table, you do not need to specify the --time_partitioning_type=DAY flag.
    • CLUSTER_COLUMNS : a comma-separated list of up to four clustering columns. The list cannot contain any spaces.
    • INTEGER2 : the default lifetime, in seconds, for the table's partitions. There is no minimum value. The expiration time evaluates to the partition's date plus the integer value. The partition expiration is independent of the table's expiration but does not override it. If you set a partition expiration that is longer than the table's expiration, the table expiration takes precedence.
    • DESCRIPTION : a description of the table, in quotes.
    • KEY:VALUE : the key-value pair that represents a label. You can enter multiple labels using a comma-separated list.
    • PROJECT_ID : your project ID.
    • DATASET : a dataset in your project.
    • TABLE : the name of the partitioned table you're creating.

    When you specify the schema on the command line, you cannot include a RECORD ( STRUCT ) type, you cannot include a column description, and you cannot specify the column's mode. All modes default to NULLABLE . To include descriptions, modes, and RECORD types, supply a JSON schema file instead.

    Enter the following command to create a clustered table named myclusteredtable in mydataset in your default project. The table is a partitioned table (partitioned by a TIMESTAMP column). The partitioning expiration is set to 86,400 seconds (1 day), the table's expiration is set to 2,592,000 (1 30-day month), the description is set to This is my clustered table , and the label is set to organization:development . The command uses the -t shortcut instead of --table .

    The schema is specified inline as: timestamp:timestamp,customer_id:string,transaction_amount:float . The specified clustering field customer_id is used to cluster the partitions.

    Enter the following command to create a clustered table named myclusteredtable in myotherproject , not your default project. The table is an ingestion-time partitioned table. The partitioning expiration is set to 259,200 seconds (3 days), the description is set to This is my partitioned table , and the label is set to organization:development . The command uses the -t shortcut instead of --table . This command does not specify a table expiration. If the dataset has a default table expiration, it is applied. If the dataset has no default table expiration, the table never expires, but the partitions expire in 3 days.

    The schema is specified in a local JSON file: /tmp/myschema.json . The customer_id field is used to cluster the partitions.

    After the table is created, you can update the partitioned table's table expiration, partition expiration, description, and labels.

    Call the tables.insert method with a defined table resource that specifies the timePartitioning property, the clustering.fields property, and the schema property.


    Before trying this sample, follow the Python setup instructions in the BigQuery Quickstart Using Client Libraries. For more information, see the BigQuery Python API reference documentation.

    Watch the video: Minus - schriftliches Subtrahieren Ergänzungsverfahren Mathematik einfach erklärt. Lehrerschmidt