« first day (2431 days earlier)      last day (2453 days later) » 
00:00 - 16:0016:00 - 00:00

12:03 AM
@ypercubeᵀᴹ that is a really good answer on the self join question. nice.
 
@sp_BlitzErik thnx
 
12:36 AM
@sp_BlitzErik I'm trying to use SQLQueryStress.exe but it seems really unstable/buggy. Any suggestions for a different tool?
 
I will give that a shot, thanks
 
It's my favorite
Also
> FIX: "Non-yielding Scheduler" condition occurs for query with many expressions in SQL Server 2014
 
> 2017
> using sql server 2014
is ostress command line only?
 
Yep, but it's easy
Lemme know if you run into any problems
 
12:42 AM
I ran into a problem
 
Good job
Niko talked about your blog post in his latest
 
I saw
then I felt kind of ripped off
but the more knowledge sharing the better, I guess
 
1:01 AM
08/30/17 20:01:21.835 [0x000016A0] [spid 64] SQLState: 40001, Native Error: 1205, Severity: 13, State: 51, Line: 7
[SQL Server]Transaction (Process ID 64) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
it's, uh, not working
 
 
5 hours later…
5:54 AM
Hello wherever you are
 
@sp_BlitzErik It's not called Cascades, part of its implementation uses a framework called Cascades. As far as I know, the SQL Server QO does not have a name.
We could call it "Bob" if you like.
 
Good morning and sorry if it was asked before. Does Sql server 2014 search phrases in where a IN ('1','2','3') the same order as they appear in the IN clause ?
I read MSDN and could not find the spotted question.
 
@MaxVernon If have some concerns with that question, regarding What types of questions should I avoid asking?. I think it is important with this type of question to be as precise as possible. It does currently read (to me) a bit like "I would like to participate in a discussion about..."
@RoyiNamir It's not defined.
If you need to force an order of evaluation (insofar as it is possible) use a CASE statement, or separate queries.
 
Thank you (like always).
 
@PaulWhite Well the opinions are starting to flow.
 
6:10 AM
Robert Cartaino on September 29, 2010

Stack Exchange is about questions with objective, factual answers. We’ve been crystal clear about this for as long as I can remember, even back to the earliest, pre-beta days of Stack Overflow. It’s right there in the standard Stack Exchange FAQ:

What kind of questions should I not ask here?

Avoid asking questions that are subjective, argumentative, or require extended discussion. This is not a discussion board, this is a place for questions that can be answered!

Thus, questions that are not answerable — discussions, debates, opinions — should be closed as subjective. It seems simple enough: Fact good; opinion and discussion bad. But why? …

On the specific question I see only two (good) answers and minimal commentary, ten unopposed upvotes on the question, and a close review completed with three votes to Leave Open.
Broadly: We don't close questions because they match a possible close reason; we close questions that are unsuitable for (or actively harmful to) the site. The close reasons are decoration on the closure/deletion action, not an end in themselves.
@hot2use All of which is not saying I think that is the greatest question to ever hit the site. It just seems to be adding value so far, with manageable moderation overhead, and seems to have been well-received by the wider community.
 
6:36 AM
@MaxVernon More specifically, you seem to ask three questions (not one as we normally prefer):
> 1. Am I correct in saying that both natural keys and surrogate keys offer benefits; deciding which methodology to use should be carefully considered?
> 2. Are there common situations where the comparisons I made above don't work?
> 3. What other considerations should be made when choosing natural or surrogate keys?
Question 1 seems almost self-evident. Questions 2 & 3 are rather broad.
I don't feel strongly enough right now to close, but the above is something I want you to think about.
 
Is there anything in SQL SERVER like "A single Trigger for all tables" ?
(for not being an XY problem - I want to audit all changes from INSERTED and DELETED into a main table)
I already have a trigger-per-table code which works great but all they are different at is with a table name variable.
(We don't want to use service broker). It also requires a single trigger-per-table and the simple trigger perforamnce are much better than service broker.
 
6:51 AM
That may be possible with a CLR trigger, but really you're reinventing features like Audit, Change Tracking, and Change Data Capture there.
And possibly temporal, depending on the requirements.
 
7:14 AM
 
@TomV empty
Or am I missing something :-)
 
Perhaps this
I was puzzled at first too
 
ok.
 
Good morning
 
@TomV ...and I'm still waiting for a good question to offer a bounty with my points.
@TomV ...and it was just an idea seeing as you felt you didn't deserve the up votes.
 
7:27 AM
I was young and unexperienced, I didn't know voting rings where a thing back then :)
 
@PaulWhite I just felt with the limited information that it would attract opinionated answers.
 
7:40 AM
Sure, I understand why someone might vote to close, I'm just discussing that action in general.
 
 
1 hour later…
gbn
9:09 AM
hello
Quick question. Did SQLDMO die a few versions ago?
 
gbn
Just migrated DBs from SQL 2008R2 to something newer and the app is prehistoric
 
But IIRC it died after SQL 2008
 
gbn
3rd party app.
 
I may be wrong though
 
9:20 AM
no longer seen in Service Pack 4 Feature Pack.
is actually a part of the SQL Server 2005 backward compatibility tools
 
Discontinued Management Objects
 
gbn
9:37 AM
I don't need it after all.
I do need to downgrade that server instance though... got bad info
 
:-/
Meh
Never thought it would take that long to vote on 600 posts.
 
10:06 AM
@PaulWhite - I have an interesting 'why is this happening?' type problem with query performance.
A couple of similar-ish queries where the more complex one runs much faster (5 secs vs. 5 mins) than the simpler one, but they don't have radically different query plans. At least not as far as I can see,
 
10:22 AM
@ConcernedOfTunbridgeWells Can you post the plans?
 
@TomV Where to?
 
@ConcernedOfTunbridgeWells brentozar.com/pastetheplan
 
@ConcernedOfTunbridgeWells Yeah that or xml showplan to a private expiring pastebin or whatever is convenient. Post-execution plans are best.
 
10:41 AM
@PaulWhite i admit, when i was formulating the question I thought about doing it as a blog post instead. I agree its not really a question. I'll see if I can rectify it into am actual question, and if not will turn it into a blog post and delete the question here. I'll be in a position to do that in a couple of hours. I also have no problem deleting the question in the interim if you think that is more appropriate.
(I'm on mobile now)
 
@MaxVernon No I don't object to it enough to even close it, let alone delete. Just giving you my thoughts.
 
@commentconverter @PaulWhite dba.stackexchange.com/a/184783/6219 where (from whom) does this come from?
 
@dezso Did you click on the revision history at all
 
@PaulWhite no, why
how does that help figuring out who left the original comments?
 
10:48 AM
ouch
 
I have no idea if it is a good answer or not. The comment was flagged by a regular as being something that should be a CW answer, so I obliged. If it's bad, people can downvote it (something that isn't possible with a comment) or edit it to make it a better answer, or vote to delete it or whatever.
 
Slow Plan (5:19)
Fast plan (0:08)
The plans follow a similar structure with similar weightings on the main operations. The 'fast' plan is actually a more complex query than the slow plan, but I can't see why it should run so much more quickly.
The only possibility I can think of is that the additional joins in the 'fast' plan somehow cut down the volume of data to process dramatically.
 
On a quick first look, the slow plan just does a large number of lookups and nested loops joins, that the optimizer would not have chosen had it had accurate cardinality estimates.
 
Update statistics? WITH RECOMPILE Hint?
Is the following question better suited on serverfault.com?
0
Q: Is there any correct way to convert file system from ext4 to xfs in centos?

Tailor DevendraI have deployed MongoDB Sharding Cluster(os-centos) on Azure with 2 disks each VM.But default file system is ext4 and I want xfs file system because of performance. I want to convert that file system. Is there any way of converting file system without any configuration changes in mongo? I tried ...

 
from the make your life complicated department:
0
Q: pg_dump hangs when launched from Eclipse RCP application

BanzaiTokyoMy PostgreSQL is 9.3 I have an Eclipse RCP application that calls a method in Spring application that launches Python script that launches pg_dump command. pg_dump command works when launched from console the python script that calls the command works the Spring application method launched wit...

 
11:16 AM
@PaulWhite Hm. Now to try and induce the vendor to add some statistics to the database.
 
@ConcernedOfTunbridgeWells What freedoms do you have to improve this query?
 
@PaulWhite I can frig with the query but it has to be hosted in SSIS so splitting it out into a multi-stage process with temp tables is essentially a non-starter. Converting it to a sproc is a non-starter as it is running against the vendor's database.
Put in context, it's a part of a set of audit controls that compare totals from source with the output of an ETL process. It does the comparison by a number of splits based on items used by finance in their reporting.
 
@ConcernedOfTunbridgeWells I see. The query text is truncated in the XML, but the tables all appear to be relatively small, and I don't see anything that requires nested loops join. How does it perform with an OPTION (HASH JOIN, MERGE JOIN) hint (assuming a plan is generated)?
If @billinkc were around I'd ask him to chime in on SSIS options.
 
If it's the source of a data flow you don't have many options I think
 
@TomV Thanks. Sorry I sometimes forget who knows what around here.
Surely a stored procedure can be used as a data source?
 
11:29 AM
Msg 8622, Level 16, State 1, Line 5
Query processor could not produce a query plan because of the hints defined in this query. Resubmit the query without specifying any hints and without using SET FORCEPLAN.
Never seen that one before.
 
@ConcernedOfTunbridgeWells Fair enough. It means a nested loop join is the only option for something in the query.
My preference would be to break the query up, e.g. at CTE boundaries, or wherever the cardinality sensitivity/misestimate first occurs in the plan, yes using temporary tables to hold intermediate results. Wrap that in a stored procedure and have a chat with an SSIS person.
 
@PaulWhite Yes but the way I read the restriction was not that it can't be used but that they aren't allowed to create one in the vendor's database
 
@TomV Can SSIS not access a different database?
 
@TomV That's it. The vendor wouldn't let us add sprocs or indexes to their database.
@PaulWhite The requirement is audit totals taken from source. If we have to stage the data somewhere else we have to build extra controls on that process.
 
@PaulWhite Sure but then you would need to create some sort of facade database on the same server
I've done that with AX and it feels a little dirty
 
11:33 AM
@TomV I'm not saying it's ideal. Solving these things is tricky with one hand tied behind the vendor's back :)
 
@TomV We're considering something like that as an option, but it's kind of a sledgehammer to crack a walnut as it just propogates more crap into the environment.
 
@ConcernedOfTunbridgeWells Do you have a relationship with the vendor or a support agreement whereby you can work out a supported solution between yous?
 
Oh, and just to make it a little more interesting, the vendor spreads their data across half a dozen databases.
 
@ConcernedOfTunbridgeWells I fully agree, as I said, I felt a little dirty when I did something along those lines, but it worked
 
@PaulWhite For a price. We're on time and materials now. And, getting something like that done would have a substantial lead time.
 
11:35 AM
I see. Well if you were to share a repro, maybe we could look for ways to write the query such that nested loops were avoidable.
It seems gnarly though
 
It is fairly convoluted. Although the data volumes aren't anything fantastic, it's complex enough to make the optimiser get its knickers into a knot.
 
Maybe rewrite (parts of) the query in SSIS?
There appear to be a bunch of lookups etc. SSIS can do that. And joins. And stuff.
You might be able to split it up that way.
 
It would have to stage a fair number of transactional tables in their entirety and then join them in the package. It might be more efficient.
 
@ConcernedOfTunbridgeWells and could get very messy if the capitalisation is off
 
11:40 AM
For example that subtree seems reasonable; however, the estimate then suddenly drops to 1 meaning the optimizer chooses a navigational strategy.
yesterday, by Joe Obbish
Don't take it personally. Paul tells me to hire a professional all the time.
 
Hold that thought, although getting sign-off is also not going to be a given or a 5 minute job even if it does happen.
 
My advice would be to get thing split into, say, 2 -5 chunks, that cope well with all the scenarios you chuck at it, and then find some way to shoehorn that into the tools you have available and the restrictions you face.
But you don't want to believe what you read on the Internet
 
Most of the time I try not to. Given the shit I write on the internet I wouldn't believe what I read either.
 
Ha. Hey it seems you might be referencing the same CTE more than once as well. It gets fully evaluated each time.
Executing it once would still be painful of course.
 
12:06 PM
Depends on whether that change could stop it cocking up the plan.
 
I doubt it, but it might cut the pain in half. Hard to do in one monolithic statement though.
 
Thanks for that edit, @PaulWhite
 
@MaxVernon Routine gun monkey stuff
 
I'm almost online
 
You could also try forcing a hash (or merge) join for these five joins in particular. That comes with the potentially nasty side-effect of forcing join order for the whole query, but that might not be so different from what you have now.
e.g. INNER HASH JOIN dbo.FinTransDetail AS ftd_acc @ConcernedOfTunbridgeWells
INNER HASH JOIN dbo.LedgerTrans AS lt_acc ... etc.
The spills might be painful though.
Something to explore anyway.
 
12:22 PM
Take some pills for the spills ;)
2
 
@PaulWhite Quite a bit faster - 37 sec.
 
@ConcernedOfTunbridgeWells Sweet.
 
I was confused by the column name, thinking it was a text[] as opposed to text. Really, fix your column/data types ;) — dezso 10 secs ago
 
:)
Hm. Array data types. Hm.
 
12:29 PM
does tempdb get encrypted automatically if there is a TDE database on the instance?
 
@MaxVernon Yes
 
thanks
I was hoping you wouldn't say lmgtfy
 
> The tempdb system database will be encrypted if any other database on the instance of SQL Server is encrypted by using TDE.
Oddly the current (2016+) version of that page seems to be offline.
 
the Docs site on TDE and cert-related items are sorely lacking in terms of descriptive text. Take for instance, the sys.certificates page.
 
Ah no it's just a mislink. The current page is Transparent Data Encryption (TDE)
 
12:36 PM
@PaulWhite thanks - I'll take a look. I'm trying to backup the master key for a TDE database, but SQL Server says there isn't one. The cert says its encrypted by master key, not service master key. it's a bit weird, but I'm sure I'm just doing something wrong. I'm sysadmin on the server, so I should be able to see everything.
 
@MaxVernon Might make a good question on Database Administrators.
 
thanks
 
Assuming it hasn't already been asked.
I've never used it myself.
 
ahhh so you did google it for me. sorry about taking up your time like that :-)
 
Happy to help. I did know the answer to that particular question, simply because I had read about it at some stage.
I found the reasoning interesting enough to remember it.
 
12:41 PM
whenever I see sp_detach_db in the docs, it makes me shiver: EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
@PaulWhite ahhh. When I saw tempdb was encrypted I suspected it was automatic; Who'd think of doing that themselves. Although it is obviously required.
well, perhaps "required" is a bit strong. But, it certainly makes sense if you care at all about the encrypted data not being visible to those who shouldn't see it.
 
@hot2use The comment author did as you requested here: dba.stackexchange.com/a/184789 (thanks!)
 
@PaulWhite great! And you cleaned up? Thank you Paul.
 
44 mins ago, by Paul White
@MaxVernon Routine gun monkey stuff
 
Thanks for cleaning up, @PaulWhite
 
We don't have guns at all, just mops and brooms.
 
12:57 PM
@PaulWhite and yuuuuuge BFGs
 
Weapons of Gentle Coercion
 
@PaulWhite ironic?
 
@ypercubeᵀᴹ In the other sense of precision i.e. being precise i.e. with spelling
 
1:02 PM
ah. didn't notice at first
 
@ypercubeᵀᴹ I will edit it to fix it, but I wanted to save it here because TypoCube™
 
@PaulWhite thanks
 
How polite you are this morning
I must admit I always used to get precision and scale the wrong way around as well
 
@PaulWhite Depends on how far out in the cuds you go. Plenty of heavily armed bogans around the areas I grew up.
Plenty of stop signs with bullet holes.
 
@PaulWhite yeah, weird
 
1:07 PM
@ConcernedOfTunbridgeWells Yeah but that's just kids having fun
Nothing wrong with shooting signs. Unless you repair signs I guess.
 
@MaxVernon at my last job i wrote a proc that would juggle files around drives when space got tight. it was like undocumented xp bingo.
 
@sp_BlitzErik wow you're brave.
 
Yeah he used to have a tiny SSD
 
<- notices he said "last job" ;-)
 
I wonder whether that's as in "the last suit you'll ever wear"
 
1:10 PM
@MaxVernon well, then ol' brento came knocking...
 
@sp_BlitzErik yah, and it's all been whiskey and cruises since then, huh?!
 
fortunately only one cruise
 
Where's our untrustworthy scamp today
 
probably spraying anti-row mode graffitos in ms paint
3
 
1:32 PM
@sp_BlitzErik I heard that you went to him begging?
 
@Lamak Brent just suffered from "The Sims" nostalgia
 
makes sense
 
@PaulWhite busy reading the chat log, you people talk too much
also it's possible (but extremely hacky) to define temp tables in SSIS data source queries
@sp_BlitzErik I don't even know how batch mode works
 
> Thursday
> still playing Tuesday's aloofness game
 
> knowing what day of the week it is
 
1:47 PM
> knowing it's daytime
 
if I'm at work then it's daytime
 
@sp_BlitzErik oh, jeez, it's thursday already
 
@sp_BlitzErik no
 
@Lamak no
 
@PaulWhite is it friday over there?
 
1:54 PM
at least I know the season: summer
 
@Lamak Yes. 1/12th of Friday has passed.
@JoeObbish It's Spring. First day today.
 
@PaulWhite how nice to be in the future
 
only in topsy turvy land
 
It's Friday-Eve today \0/
 
G&T-o'clock in two hours ...
 
always wonder who downvotes these things
 
microsoft PMs
 
Paul, I've asked, and answered, my TDE question
 
@sp_BlitzErik that's a good point
 
runs off to backup TDE certificates
 
2:21 PM
Cool
 
general question: has anyone seen a good method for indexing for windowing functions where partition/order by columns come from different tables joined together?
 
@sp_BlitzErik Not on SQL Server but Oracle has join indexes.
 
@sp_BlitzErik parallel apply pattern? that's all that comes to mind
I've never taken a super hard look at it
sounds like a good blogging challenge
 
perhaps!
 
finally
 
2:26 PM
we're going to have to come to terms on the test data first, though
because i'm very attached to my stack overflow database
 
I'd be game for it, even though it'll give you an unfair advantage
the best solution would be to give me access to one of your servers
I could download it locally, but I have very special hardware
 
"one of your servers"
i have ~a~ home server
 
WELL IT'S AN EASY CHOICE THEN
 
yes, but giving access to it from outside is annoying
we talked about this before -- the only thing i can use reliably is chome remote desktop
which would require me giving you access to my google account
and we're just not to that point in our relationship yet
 
possible to create a second google account?
 
2:31 PM
ALTER [JOE OBBISH] SET TRUSTWORTHY ON
4
 
how about now?
 
the other option is for you to use webex (or another web conf tool) that allows desktop control
but then i may know too much about you
if you want to dictate the sample data, i don't care. the query can be as boring as like
SELECT whatever, ROW_NUMBER() OVER (PARTITION BY a.col, b.col ORDER BY b.col, a.col)
FROM Example1 AS a
JOIN Example2 AS b
ON a.Id = b.Id
 
oh, both the partition clause and the order by clause reference 2 different tables
that's even more annoying
 
heh heh heh
 
which version of sql server?
 
2:34 PM
16/17?
don't care
 
ok good
I've already created my temp table
 
i can spin up a vm that matches whatever hardware you're using
 
oh that's a good idea
ok you can pick the sample data
just don't make it too easy
 
lol
i'd pick stack overflow, but that's a pain for you
so you gin up the sample data
 
I'll download it
 
2:36 PM
YOUR MOTHER
 
I have an American-sized hdd
 
god does love american hard drives
 
@JoeObbish a big block?
 
128k block size
with exhaust pipes
painted in red, white, and blue
and a gun as a security measure
 
got a chevelle ss 454 with a gatling gun on the passenger side
 
2:42 PM
Should there be two classes of solutions? 1) Safe for production 2) not safe for production?
 
dunno, let's see what we come up with
 
What is the fastest/most used database playground for mysql?
 
send me an email when you have an idea for a sample query
 
doesn't this seem like more of an index tuning exercise?
 
2:48 PM
yep
it might not work out well as a challenge, need to try it though
honestly I'm not sure how much can be done
the rules for when sql server knows that a sort order was preserved are weird imo
 
that's valuable, too
 
@JoeObbish seems like you are gonna win this
;-)
 
the fix is in
 
@Lamak don't make popcorn yet
if it happens I'm sure it'll be weeks out
 
You might like to create a separate chat room for the challenge
 
2:53 PM
:o
 
what paul means is that he would like it if we created a separate chat room for it
 
No what I mean is you might like to
To keep everything together
 
well I was going to have Erik email me
You can participate too, but I'm sure you'll win if you do
 
You both have the ability to move messages from this room to get started
 
pablo is clearly the final boss
speaking of blogs, where's this string searching manifesto?
 
2:55 PM
@JoeObbish I don't do that well in these things historically
 
historically?
was there a golden age of SQL challenges that I missed?
 
tsql tuesday?
 
@sp_BlitzErik mid next week I'm told.
 
@PaulWhite boooooooooooooooo
 
@JoeObbish Various places on the internet have held them in the past. Sometimes with prizes
 
2:56 PM
sql prize fighting
 
the prize for this one is you get to keep your pride
 
Ha ha ha
 
and your moderator hat
 
it's somewhat of a "nothing to gain, everything to lose" situation
 
The last hat I'll ever need
 
2:58 PM
@JoeObbish too late
 
I sometimes wonder if performance challenges could be made to work in Q & A format
 
@PaulWhite I thought the one I did worked well
Erik did one too
 
does my isnull question count for that?
 
yes
 
@JoeObbish Remind me?
 
3:01 PM
bbl
 
@PaulWhite brentozar.com/go/isnull
i suppose my sargable date question would count as well
19
Q: SARGable WHERE clause for two date columns

sp_BlitzErikI have what is, to me, an interesting question on SARGability. In this case, it's about using a predicate on the difference between two date columns. Here's the setup: USE [tempdb] SET NOCOUNT ON IF OBJECT_ID('tempdb..#sargme') IS NOT NULL BEGIN DROP TABLE #sargme END SELECT TOP 1000 IDENTIT...

 
Hmm yes. On phone so limited typing/searching but I was thinking about what we'd need to make that sort of question really nice to participate in.
 
@PaulWhite handicaps
 
😁
 
@Lamak some would say not using postgres is enough of a handicap~
 
3:11 PM
ah, yeah, then more handicaps
 
Isn't Postgres all syntax sugar and programming convenience but no performance?
 
@PaulWhite no, it's a healthy RDBMS, no sugar
 
@PaulWhite like if oracle was vegan or something
 
@dezso Vegetarian?
 
@JoeObbish must use an even worse hardware, @sp_BlitzErik can answer only if he's sober, @PaulWhite......well @PaulWhite can answer if he's drunk, sleep deprived and using just one hand or something like that
 
3:14 PM
NOOOOOOOOO
i got my peer pressure badge, that was enough not drinking for one day
or one lifetime
 
I used to enjoy reading crazy solutions by the likes of AMB and Peter Larsson
 
@sp_BlitzErik I knew it
 
@PaulWhite swepeso changed my life
 
@sp_BlitzErik I can imagine
 
the stuff he used to kick out for date math was ridiculous
 
3:17 PM
Yep
Humbling experience quite often, but enjoyable with it
The sort of code that needs a 100:1 comment ratio
I do support the use of comments in code
Challenges are a lot of work for the asker, and we're not really set up to reward that here
They have to specify the problem, restrictions, judge entries etc.
 
well, it works fairly reliably on code golf
sql is a terrible language for code golf challenges
you get done declaring a variable and you've already lost
 
3:34 PM
@sp_BlitzErik sounds like a lot of excuses for your next challenge
 
aguywithnoblogsayswhat?
 
@sp_BlitzErik can you really say you have a blog?
 
yes
i even have a go code
 
@sp_BlitzErik where?
 
brentozar.com/go/erik
 
3:43 PM
@sp_BlitzErik ah, brent's blog ;-)
 
@Lamak i can think of a couple founders who might take offense to that, but alrighty
 
@sp_BlitzErik also, this post was quite interesting: brentozar.com/archive/2017/08/…
 
would you like an autographed copy?
 
@sp_BlitzErik I would
 
i'm pretty good at forging brent's signature these days
 
3:50 PM
aaw
@sp_BlitzErik so, do you need an address or something?
 
#1 happy street chile
 
@sp_BlitzErik it should be in spanish, dude. #1 calle feliz
 
@sp_BlitzErik Yes but interesting SQL challenges aren't code golf. I don't think PP&CG do much in the way of SQL performance challenges
 
00:00 - 16:0016:00 - 00:00

« first day (2431 days earlier)      last day (2453 days later) »