Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Problem with the time

From   Nick Cox <>
Subject   Re: st: Problem with the time
Date   Wed, 13 Apr 2011 16:18:25 +0100

Right and wrong.

-year()- expects an argument in days. So you are quite right on that.

But -- and this is fundamental -- in Stata a format is just how data
are displayed. It is not what the data are, or how they are stored.

A format is irrelevant to numeric operations, just relevant on display.

This is a very common confusion, perhaps because the word "format"
tends to be used in so many ways for different software and computing

So, for example, here is a daily date with a format that shows only the year:

. di %td_CY  mdy(4,13,2011)

That is not perverse; it is not only possible but sometimes the answer
to a question.

Numeric data are not defined by their format! This might seem
pedantry, but it is common to see people imagining on this list that
changing a format changes a numeric value, and that is not true.

It is true that in something like string(1.234, format("%2.1f")) the
format determines the result, but in the more common case of numeric
data it is best to keep value and format separate in your mind.


On Wed, Apr 13, 2011 at 4:05 PM, Oliver Jones
<> wrote:
> Hi,
> maybe the function year just can handle the format %td correctly?
> dis year(0)
> gives the expected result of 1960 which is Statas base year.
> And then
> dis year(366)
> gives the year 1961.
> But I can't help more...
> Best
> Oliver
> Am 13.04.2011 16:45, schrieb Guido Lüchters:
>> Hi Statalist
>> anybody knows
>> why
>> gen x=year(ym(1951,1))
>> gives
>> 1959 ?

*   For searches and help try:

© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index